【问题标题】:Class member variable类成员变量
【发布时间】:2014-07-28 00:21:33
【问题描述】:

我开始学习 c++,据我所知,我只能找到原始类型作为类成员。

为什么以下给我一个错误:缺少类型标识符 - 假定为 int?

class CarManager
{
public:
    void Drive();

private:
    Car car;
};

尝试了所有我能想到的组合:

Car car = new Car();
Car *car = new Car();
Car &car = new Car();

都有自己的错误。

【问题讨论】:

  • 第一个代码块是正确的,但它不知道Car存在。
  • Car 定义在哪里?
  • 它在项目上,如果我在 main 方法上声明它可以正常工作,我不明白
  • 你在这之前声明了Car类型吗?顺序很重要。
  • 只有第二个在语义上是正确的。

标签: c++ visual-c++


【解决方案1】:

首先,必须定义Car:在定义CarManager之前添加#include "Car.h"

然后,如果 car 属性是一个对象(如您的示例中建议的那样),它必须具有默认构造函数或在 CarManager 构造函数上初始化:

class CarManager
{
public:
    CarManager() : car(...construction parameters...) {} // to be moved in cpp file, of course!
    void Drive();

private:
    Car car;
};

注意:如果是指针 (Car* car;) 或引用 (Car& car;),则不需要包含 Car.h,前向声明即可(class Car; 而不是 #include "Car.h")。然后,在初始化指针/引用时包含 CarManager.cpp 中的 Car.h。

【讨论】: