GARANTIR DESCONTO

Fórum POO e Visibilidade #336799

26/01/2007

0

Bom dia pessoal, estou com o seguitne problema.

Tenho uma classe pai, chamada TPersistencia. Esta Classe tem os seguintes atributos protegidos:
Protected
DsPrinc:TDataSource;
QryExecuta:TSqlQuery;
QryPesquisa:TSqlQuery;
vCondAuxiliar:String;

eu tenho como como public o método consultar que recebe um objeto pesquisa, extrai dele as condições do objeto e joga na variável vCondAuxiliar(Protegida)
function Consultar(Pesquisa:TPesquisa):TObject;

O problema é que, quando eu chamo este método a partir de uma classe filha de TPersistencia, ele executa normalmente, porém, quando ele vai atribuir as condições do objeto TPesquisa na váriável vCondAuxiliar, ele gera um AcessViolation. Se eu colocar esta variável como public funciona,
mas eu estaria perdendo encapsulamento.

Alguém sabe o que pode estar aconstecendo.

Grato.

Ricardo Coelho.


Bholiveira

Bholiveira

Responder

Posts

26/01/2007

Aroldo Zanela

Colega,

Atributos são privados e métodos são públicos. Isto permite o encapsulamento dos objetos. Portanto, crie um Get e Set (públicos) para ler/escrever nessa ´variável´.


Responder

Gostei + 0

26/01/2007

Bholiveira

Valeu pela dica, a atribuição à variável parou de dar erro, o erro ocorre agora, quando eu fecho o CdsPrinc, logo após de executar o método consultar.

Este ClientDataSet também está privado e com um método getCdsPrinc.

Ele está sendo criado no create da classe pai (TPersistencia) que é chamado no create do filho.


Ricardo Coelho.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar