我有一个非常简单的 Child-Parent 关系,其中 OlderSon 从 Parent 继承,并且 Parent 有一个指向他的 OlderSon 的指针,例如:
#ifndef PARENT_HXX
#define PARENT_HXX
#include <iostream>
#include <string>
//#include "OlderSon.hxx"
class OlderSon;
class Parent
{
private :
OlderSon* _os;
public :
int _age;
std::string _name;
Parent(){
_name="parent name";
_age=60;
//OlderSon* _os=new OlderSon();
}
};
#endif //PARENT_HXX
和儿子:
#ifndef OLDERSON_HXX
#define OLDERSON_HXX
#include <iostream>
#include <string>
#include "Parent.hxx"
class OlderSon: public Parent
{
public:
OlderSon(){
_age=25;
_name="Olderson name";
}
};
#endif //OLDERSON_HXX
但是,每当我尝试取消注释初始化指针的行时,OlderSon* _os=new OlderSon();
我都会收到一条错误消息:
Parent.hxx: In constructor ‘Parent::Parent()’:
Parent.hxx:25:31: error: invalid use of incomplete type ‘struct OlderSon’
Parent.hxx:8:7: error: forward declaration of ‘struct OlderSon’
我尝试了不同的方式,即同时包含 .hxx 或通过前向声明,但似乎没有任何帮助。我想这不是一个非常复杂的问题,但它开始令人沮丧。
有任何想法吗?
提前致谢!