hmm.. é que o método Persistir da classe TPersistente seria utilizado em outra classe por exemplo FuncionarioDAO que em vez de retonar um objeto "Departamento" iria retornar o objeto Funcionario. E agora? hehehe valeu.
--- Em delphi-br@yahoogrupos.com.br, Joao Morais <[EMAIL PROTECTED]> escreveu > > Ricardo Malikoski wrote: > > Resposta no meio do texto. > > > > Pessoal passei a utilizar o Delphi.Net (versão 2006) e tive um problemas com classes. Fiz o seguinte: > > > > Criei uma classe assim: (deixei ela enxuta assim apenas pra tentar isolar o erro) > > > > > > type > > TPersistente = class(TObject) > > private > > public > > function Persistir() : boolean; virtual; abstract; > > end; > > > > em outra unit: > > > > obs: o tipo "Departamento" é uma classe em outra unit > > > > type > > DepartamentoDAO = class (TPersistente) > > private > > public > > function Persistir(pDepto : Departamento) : boolean; reintroduce; overload; > > Você não está implementando o método virtual Persistir, ao invés disto > você criou outro método com o mesmo nome. Remova o reintroduce, troque > overload por override. Como métodos override devem ter o mesmo formato > que o método virtual, então você escolhe entre remover o parâmetro > pDepto ou adicionar este parâmetro na classe abstrata. > > > > end; > > > > implementation > > > > > > { DepartamentoDAO } > > > > function DepartamentoDAO.Persistir(pDepto: Departamento): Boolean; > > begin > > > > end; > > > > > > Em uma outra unit quando eu crio o DepartamentoDAO dá um erro de compilação: > > > > function Departamento.Persistir: Boolean; > > var > > objPersistente : DepartamentoDAO; > > begin > > objPersistente := DepartamentoDAO.Create; -->> aqui acontece o erro: [Pascal Error] ClassDepartamento.pas(56): E2402 > > Constructing instance of abstract class 'DepartamentoDAO' > > Até o Delphi não-sei-que-versão, isto era apenas um warning. É o > problema que eu citei acima, você tem que implementar o método abstrato > Persistir. > > > > result := objPersistente.Persistir(self); > > objPersistente.Free; > > end; > > > > > > O que fazer ? já tentei várias coisas e nada... > > > > > -- > Joao Morais >