Ir ao conteúdo
  • Cadastre-se

Composição em duas classes


mar_tchello

Posts recomendados

Boa tarde galera.

Bom, fiz uma pesquisa antes mas nao encontrei algo que pudesse me auxiliar, infelizmente.

Tentei várias coisas já, mas ta difícil chegar numa solução.

Enfim, eis o que se segue:

Tenho uma classe A que instancia objetos da classe B.

Acontece que a classe C possui ponteiros pra classe B que , por sua vez, instancia objetos da classe C e as armazena em uma lista.

Seria isso possivel? estou tentando e está dando um erro que não consigo identificar "type name expected" (já tive vários problemas com essa mensagem de erro e não encontrei nada semelhante aqui).

O compilador é o C++ Builder 5.

Fiz uma pesquisa antes e não consegui encontrar nada. =/

Bom, ficaria algo +- assim:

desenho-1.jpg

O problema estaria quando eu incluo a classe B na C sendo que a C inclui a B.... acredito que ai esteja o problema...

A classe C nunca vai instanciar um objeto da B, apenas armazena ponteiros pra esses objetos.

Fiz um teste, ocultando tudo que envolvia a classe B na C e compilou... mas ai meu software nao funciona O_o.

ALLguma sugestao??

valeu pessoal, abraços ! :-BEER :-BEER :-BEER

Link para o comentário
Compartilhar em outros sites

Pela experiência que tenho, o C++ se quebra com essa referência cruzada (B x C e C x B). Coitado dele também, né...

Na classe C, faça uma declaração sem corpo da classe B ao invés de incluir o header dela. Deve resolver.

Se não der, monta o código desse esqueleto que você fez o diagrama aí. Daí ponho no Builder e dou uma olhada.

JP

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...