OOP和类组合错误

时间:2013-11-11 09:56:45

标签: c++ oop

所以我有三个课程,我们可以叫一辆车,一辆发动机和一台定子马达。他们每个人都依赖于另一个。因此,汽车有发动机,发动机有定子电机。

以下是我在C ++中声明类的方法:

class Car {
private:
   bool Has_Windows;
   Engine _Eng_;
public:
   Car(bool Windows, Engine _Eng): Has_Windows(Windows), _Eng_(_Eng){}
};


Class Engine {
private:
   bool Racing_Car;
   Stator_Motor s_motor;
public:
   Engine(bool Car_Type_Engine, Stator_Motor _s_motor): Racing_Car(Car_Type_Engine),
          s_motor(_s_motor){
   }
};


Class Stator_Motor {
private:
   bool AC_220;
public:
   Stator_Motor(bool Voltage_Type): AC_220(Voltage_Type);
};

在主要内容中,我将C初始化为:

Car C(true, Engine(true, Stator_Motor(true)));

现在问题就在这里,但是当我写这篇文章时,Visual Studio中的Intellisense确实找到了Stator_Motor构造函数定义,但是一旦我输入它,它就说它找不到具有类似参数的Engine的定义。这是为什么?

1 个答案:

答案 0 :(得分:1)

在C ++中,您需要在使用之前声明您正在使用的符号。由于您没有对类使用指针或引用,因此实际上必须在使用它们之前对它们进行定义。

所以你必须以相反的顺序定义类:

class Stator_Motor { ... };

class Engine { ... };

class Car { ... }

此外,Stator_Motor中的构造函数名称错误。