c++ - 不使用 class 关键字的前向声明
问题描述
class Wheel
{
Car* car;
};
int main(){
return 0;
}
上面的代码不会编译但是如果我添加一个class
关键字然后编译工作:
class Wheel
{
class Car* car;
};
为什么第一个示例无法编译?我也了解以下是实现此目的的另一种方法:
class Car;
class Wheel
{
Car* car;
};
解决方案
就像你一样,编译器从上到下读取。如果你有一个类的对象指针而没有声明该类,编译器(像你一样)会“等等,这个类是什么?”
(编译器说“这是什么”,例如:
error: ‘Car’ does not name a type; did you mean ‘char’?
它是说,我不知道这种类型,我如何声明一个指向它的指针。它甚至试图对一个建议有所帮助,多么可爱!)
因此,您需要前向声明,并且为此专门允许使用它们。