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