[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Onde foi que eu errei?



Ola',

Nao sei se tem mais alguem fazendo o EP em C++, mas se tiver... sem
brincadeira, faz 8 horas que estou tentando identificar a origem de um
problema.

Eu tenho 2 tipos CORBA: lobby e sala. Um servente "lobby" instancia um
servente "sala" (com new, portanto independente do escopo do objeto
lobby), cria uma referencia corba para esse servente (_this()) e guarda
essa referencia (alem de retorna-la para o cliente). Isso esta'
funcionando direito (parece), e eu consigo mandar uma mensagem para a
sala. Mas se esse objeto "sala" (e, portanto, o servente correspondente)
muda de estado (so' consegui testar com uma nova pessoa entrando na sala),
quando eu tento acessar o objeto, da' pau; e' como se a referencia corba
que eu guardei (e que funcionava direitinho) passasse a nao ser mais
valida; a mensagem de erro e' "pure virtual method called"; acho que isso
significa que ele esta' tentando chamar um metodo do "skeleton" ao inves
do metodo que eu implementei, o que nao faz muito sentido.

O gdb nao ajuda muito; deu pra ver que o valor do ponteiro (as referencias
no mico sao implementadas como ponteiros) continua apontando para o mesmo
lugar, mas qualquer chamada do tipo "sala->whatever()" da' erro. Tambem
sei que o objeto nao esta' sendo desalocado acidentalmente, porque
coloquei um "cerr << 'blah'" no destrutor.

Alguem tem alguma ideia?
Ate' +
Nelson