1

我想将两个类保存在一个文件中,并且我希望其中一个类在其中包含另一个类的实例。所以在我的头文件中我有这样的东西:

class Box{
    Item a,b,c;
    /*
    ...
    */
}

class Item{
    /*
    ...
    */
}

显然编译器说它不知道什么项目。如何让它看到 Item 类?

4

3 回答 3

8

只需将 Item 类定义移到 class 之上Box。现在 Box 可以看到完整的 Item 类型,并且成为 Box 的成员是有效的。

class Item{
    /*
    ...
    */
}

class Box{
    Item a,b,c;
    /*
    ...
    */
}
于 2013-07-29T09:29:27.040 回答
3

您可以通过在代码开头添加来转发声明您的类:

 class Box;
 class Item;

请注意,编译器应该知道类的每个数据成员的大小。您可能想要重新排序您的类定义以确保,或使用指针等...

你可能想使用原始指针、引用、智能指针……

于 2013-07-29T09:29:06.477 回答
2

尝试这个:

class Item{
    /*
    ...
    */
}

class Box{
    Item a,b,c;
    /*
    ...
    */
}
于 2013-07-29T09:29:36.997 回答