erreur: en avant la déclaration de struct
Je reçois l'erreur:
proprietario.cpp:36: error: invalid use of incomplete type ‘struct Motocicleta’
proprietario.h:12: error: forward declaration of ‘struct Motocicleta’
Motocicleta.h:
#ifndef __MOTOCICLETA__
#define __MOTOCICLETA__
#include <iostream>
#include "veiculo.h"
#include "proprietario.h"
using namespace std;
class Proprietario;
class Motocicleta:public Veiculo{
public:
Motocicleta(int nPassageiros, string modelo, string placa, int aFabricacao, Proprietario* pai, int nRodas, int aro);
~Motocicleta();
Motocicleta (const Motocicleta& source);
Motocicleta& operator= (const Motocicleta& source);
string toString();
};
#endif
Proprietario.h
#ifndef __PROPRIETARIO__
#define __PROPRIETARIO__
#include <iostream>
#include "motocicleta.h"
#include "caminhao.h"
#include "carreta.h"
#include "carro.h"
using namespace std;
class Carro;
class Carreta;
class Caminhao;
class Motocicleta;
class Proprietario{
protected:
string nome;
string cpf;
Motocicleta* mMoto;
Caminhao* mCaminhao;
Carreta* mCarreta;
Carro* mCarro;
};
Veiculo.h:
#ifndef __VEICULO__
#define __VEICULO__
#include <iostream>
#include "proprietario.h"
#include "roda.h"
#include "motor.h"
using namespace std;
class Motor;
class Proprietario;
class Veiculo{
protected:
int nPassageiros;
string modelo;
string placa;
int aFabricacao;
Proprietario* pai;
Roda* rodas;
Motor* mMotor;
int nRodas;
};
J'ai enlevé les méthodes, parce que si j'ai ajouté à ceux que la question va être long, désolé, le code est PT-BR. J'ai vu que le problème est généralement est en avant de la déclaration. Mais je ne trouve pas le problème, j'ai regardé dans de nombreux forums, mais je ne trouve pas le problème..
Quelqu'un peut m'aider?
Besoin d'aucune autre partie du code?
Ligne en ligne? Poste le code à la ligne spécifiée dans le message d'erreur
ceux du rpc sont énormes, je vais ajouter que l'appel ^^
Dans votre précédente question, j'ai répondu que vous devez supprimer le comprend et laisser seulement les déclarations de l'avant si possible. Il me semble que vous êtes à la recherche de quelqu'un pour prendre votre code, de le corriger, et de publier la version corrigée.
Poste le contenu de
J'ai résolu le problème.. j'ai besoin d'ajouter ces en-têtes dans le fichier cpp.. MERCI
ceux du rpc sont énormes, je vais ajouter que l'appel ^^
Dans votre précédente question, j'ai répondu que vous devez supprimer le comprend et laisser seulement les déclarations de l'avant si possible. Il me semble que vous êtes à la recherche de quelqu'un pour prendre votre code, de le corriger, et de publier la version corrigée.
Poste le contenu de
proprietario.cpp
. L'erreur ici est "invalid use of incomplete type ‘struct Motocicleta’
", "forward declaration of ‘struct Motocicleta’
" est juste une note utile (ce que votre compilateur a mis dans l'erreur pour vous aider).J'ai résolu le problème.. j'ai besoin d'ajouter ces en-têtes dans le fichier cpp.. MERCI
OriginalL'auteur Lefsler | 2012-03-23
Vous devez vous connecter pour publier un commentaire.
Dans Proprietario.cpp sur la ligne 36 vous faire quelque chose avec la classe de Motocicleta, sans y compris la déclaration de classe premier (vous n'avez qu'une déclaration anticipée).
OriginalL'auteur dbrank0
L'en-tête de la déclaration d'une classe qui doit être inclus (
#include "xxx.h"
) ou la classe devrait être l'avant-déclaré (class xxx;
). Vous semblez faire à la fois dans vos en-têtes, conduisant à l'avant-déclaration après vrai déclaration, qui est probablement la cause de dit des ennuis.OriginalL'auteur milliburn
Vous avez plus de
#include
s que vous avez besoin. Si vous avez besoin seulement d'une déclaration anticipée, il n'est pas nécessaire d'inclure le fichier d'en-tête. Par exemple, dans Proprietario.h, vous utilisez uniquement des pointeurs versMotocicleta
,Caminhao
,Carreta
etCarro
de sorte que tous vous avez besoin est la déclaration, vous n'avez pas besoin de#include "motocicleta.h"
de sorte que vous pouvez le retirer.Ce n'est pas tout à fait expliquer l'erreur. Je pense que si vous simplifier vos en-têtes, il sera plus facile de localiser l'erreur. Sans voir proprietario.cpp et tout ce que vous avez retiré des en-têtes que vous avez indiquée dans votre question, je ne peux pas être trop sûr de la cause de l'erreur.
OriginalL'auteur IronMensan