我想在一个文件中保留两个类,我希望其中一个包含另一个文件的实例。所以在我的头文件中我有这样的东西:
class Box{
Item a,b,c;
/*
...
*/
}
class Item{
/*
...
*/
}
显然编译器说它不知道什么Item。如何让它看到Item类?
答案 0 :(得分:8)
只需将Item类定义移到类Box
之上。现在Box可以看到完整的Item类型,它有效成为Box的成员。
class Item{
/*
...
*/
}
class Box{
Item a,b,c;
/*
...
*/
}
答案 1 :(得分:3)
您可以通过在代码的开头添加来转发声明您的类:
class Box;
class Item;
请注意编译器应该知道类的每个数据成员的大小。您可能希望重新排序类定义以确保,或使用指针等...
你可能想要使用原始指针,引用,智能指针......
答案 2 :(得分:2)
试试这个:
class Item{
/*
...
*/
}
class Box{
Item a,b,c;
/*
...
*/
}