c++ - 错误 : forward declaration of struct

标签 c++ oop forward-declaration

我收到错误:

proprietario.cpp:36: error: invalid use of incomplete type ‘struct Motocicleta’
proprietario.h:12: error: forward declaration of ‘struct 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;
  };

我删除了这些方法,因为如果我添加这些方法,问题将会很长,抱歉,代码在 PT-BR 中。我看到问题通常是前向声明。但是我找不到问题,我看了很多论坛,但我找不到问题..

有人可以帮助我吗?

需要代码的任何其他部分吗?

最佳答案

在第 36 行的 Proprietario.cpp 中,您对类 Motocicleta 做了一些事情,但没有首先包括完整的类声明(您只有一个前向声明)。

关于c++ - 错误 : forward declaration of struct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9840109/

相关文章:

c++ - 我如何解决 Codeforces Beta 第 12 轮问题 D?

c++ - try catch throw 异常终止

c++ - OpenGL-CL多线程互操作

c++ - 如何在彼此中使用两个类的实例

C++ 类原型(prototype)无法正常工作?

c++ - 如何转发声明用作成员变量的结构

c++ - 如何复制数据?

c++ - 全局对象是否提供比多个本地实例更好的性能?

oop - Lua 中元方法的继承

oop - Kotlin:如何将作为集合的类变量重写为子类型的集合