查找 Class 时出错,即使它是预定义的

Error finding a Class even when it's predefined

class Slice ;

class Apple{
  ...
  Slice x;
};

class Slice{
    ...
};    

即使我定义 class 切片存在。 当我在我的 class Apple 中调用它来创建一个 Slice 对象 'x' 时,编译器给我一个 error:field x has an incomplete type。 如果我交换 classes 的顺序,让 Slice 先生成,错误消失,程序编译没有问题。

与what非常相似的问题 In which order should classes be declared in C++? 有。但出于某种原因,预定义 classes 对我不起作用。

我的问题的图片,如果你需要具体的 http://gyazo.com/cf6fdf2894c34afba4ef0e352510fcfd 这只是我为学习如何在对象位于另一个对象内时更改对象状态而编写的一些乱码。

class Slice;

如果您随后声明指针或对不完整类型的引用,则前向声明有效,而不是在您使用该类型的实例时。

您的 Apple class 正在使用 Slice 的完整实例,因此编译器需要知道 Slice 实际上是什么,以便正确布局 Apple class。由于 Slice 是一个不完整的类型,编译器会给出错误。

要解决您的问题,您可以在 Apple class 中声明对 Slice 的指针或引用。