【发布时间】:2013-07-29 00:38:30
【问题描述】:
我想将两个类保存在一个文件中,并且我希望其中一个在其中包含另一个的实例。所以在我的头文件中我有这样的东西:
class Box{
Item a,b,c;
/*
...
*/
}
class Item{
/*
...
*/
}
显然编译器说它不知道什么项目。如何让它看到 Item 类?
【问题讨论】:
标签: c++ class dependencies
我想将两个类保存在一个文件中,并且我希望其中一个在其中包含另一个的实例。所以在我的头文件中我有这样的东西:
class Box{
Item a,b,c;
/*
...
*/
}
class Item{
/*
...
*/
}
显然编译器说它不知道什么项目。如何让它看到 Item 类?
【问题讨论】:
标签: c++ class dependencies
只需将项目类定义移动到类Box 之上。现在 Box 可以看到完整的 Item 类型,并且成为 Box 的成员是有效的。
class Item{
/*
...
*/
}
class Box{
Item a,b,c;
/*
...
*/
}
【讨论】:
您可以通过在代码开头添加来转发声明您的类:
class Box;
class Item;
请注意,编译器应该知道类的每个数据成员的大小。您可能希望重新排序您的类定义以确保,或使用指针等...
您可能想要使用原始指针、引用、智能指针……
【讨论】:
试试这个:
class Item{
/*
...
*/
}
class Box{
Item a,b,c;
/*
...
*/
}
【讨论】: