Ola, estou com um trabalho da faculdade para fazer e preciso implementar um diagrama UML com herancas:
Meu problema é o seguinte quando implemento a Classe Crianca ela possui um atributo do tipo Adulto, e a classe Adulto possui um atributodo tipo Crianca. O que ocorre é no momento da compilacao parece que se defino antes a Classe Crianca o compilador acusa que Adulto não esta definido( imagino que isso ocorra devido o compilador compilar linha-a-linha e como a Classe Crianca foi definida primeiro ainda não há um registro da Classe Adulto. Se inverto a ordem de inclusão o compilador da o mesmo problema acusando que crianca ainda não está definido. Então o que fazer? Segue abaixo o cabeçalho simples do meu codigo sem funcoes da logica de vendas implementadas!
#ifndef USUARIO_H
#define USUARIO_H
#include<string>#include<iostream>using std::string;usingnamespace std;namespaceEntities{//----------------------------- Classe-base usuario -----------------------------------classUsuario{protected:int id_;
string nome_;int idade_;float saldo_;public://Construtor padrãoUsuario();//Cria novo usuario//Pre-Condicao: não pode ser instanciado como UsuarioUsuario(int id,string nome,int idade,float saldo);//Retorna ID do usuarioint getId();//Retorna nome do usuario
string getNome();//Retorna idade do usuarioint getIdade();//Retorna saldo do usuariofloat getSaldo();//Modifica saldo do usuariovoid setSaldo(float valor);//Imprime dados do Usuario//Funcao virtual pura -> define Usuario como classe abstratavirtualvoid toString()=0;};//----------------------------- Classe Adulto -----------------------------------classAdulto:publicUsuario{protected:Crianca*dependentes_;int numDependentes_;public://Cria novo usuario adultoAdulto();//Cria novo usuario com atributosAdulto(int id,string nome,int idade,float saldo);//Cria adulto co dependentesAdulto(int id,string nome,int idade,float saldo,Crianca dependentes[],int numDependentes);//Torna Adulto uma classe instanciavelvoid toString() override;//Adiciona dependentevoid addDependente(Crianca*dependente);};//----------------------------- Classe Crianca -----------------------------------classCrianca:publicUsuario{private:Adulto*responsavel_;public://Construtor padrãoCrianca();//Cria novo usuario CriancaCrianca(int id,string nome,int idade,float saldo,Adulto*responsavel);//Sobrescreve funcao toString e permite que Crianca seja uma classe instanciavel//Imprime na tela dados da criancavoid toString() override;};//----------------------------- Classe Idoso -----------------------------------classIdoso:publicAdulto{public://Cria um novo IdosoIdoso();//Cria um novo idoso pre definiddoIdoso(int id,string nome,int idade,float saldo);};}#endif//USUARIO_H
Pergunta
abc123
Ola, estou com um trabalho da faculdade para fazer e preciso implementar um diagrama UML com herancas:
Meu problema é o seguinte quando implemento a Classe Crianca ela possui um atributo do tipo Adulto, e a classe Adulto possui um atributo do tipo Crianca. O que ocorre é no momento da compilacao parece que se defino antes a Classe Crianca o compilador acusa que Adulto não esta definido( imagino que isso ocorra devido o compilador compilar linha-a-linha e como a Classe Crianca foi definida primeiro ainda não há um registro da Classe Adulto. Se inverto a ordem de inclusão o compilador da o mesmo problema acusando que crianca ainda não está definido. Então o que fazer? Segue abaixo o cabeçalho simples do meu codigo sem funcoes da logica de vendas implementadas!
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.