我有一个非常简单的父子关系,其中OlderSon从父继承和家长有一个指针指向他OlderSon,如:C++。孩子从父母继承,并包括父属性
#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或前向声明,但似乎没有任何帮助。我想这不是一个非常复杂的问题,但它开始令人沮丧。
任何想法?
在此先感谢!
你的儿子是父母吗?我想也许你应该有一个Person类的基类,并且Person实例和其他的Person类实例组合起来形成族。 – Dennis 2012-04-17 10:48:16
嗨,现在你指出了儿子/父母的概念没有多大意义。不过,我试图将名称更改为“父/子”以更清楚地解释它。实际上,这些类是Factory方法的一部分。我想在游戏中创建新的CHARACTERS和新的ITEMS。我创建了一个'ObjectFactory'(作为Parent),它将过滤一个ITEM或CHARACTER想要创建的对象。还有两个子类'ItemFactory'和'CharacterFactory',它们将是'ObjectFactory'的属性。然后根据情况使用'ItemFactory'或'CharacterFactory'的'.createObject(...)'。 – lllllll 2012-04-17 11:17:02
你不需要过滤任何东西。 ObjectFactory应该是抽象的,如果用户想创建一个项目,他们应该只使用ItemFactory。 – Dennis 2012-04-19 09:09:47