私は、OlderSon が Parent から継承し、Parent が彼の OlderSon へのポインタを持つ、非常に単純な Child-Parent 関係を持っています。
#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 の両方を含めるか、前方宣言によって試しましたが、何も役に立たないようです。それほど複雑な問題ではないと思いますが、イライラし始めています。
何か案は?
前もって感謝します!