У меня есть очень простые отношения между детьми и родителями, где OlderSon наследуется от родителя и родитель имеет указатель на его OlderSon, такие как:C++. Ребенок наследует от Родителя и включается как атрибут 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 или путем объявления вперед, но ничего не помогает. Я думаю, это не очень сложная проблема, но она начинает расстраивать.
Любые идеи?
Спасибо заранее!
Ваш сын является родителем? Я думаю, может быть, у вас должен быть базовый класс «Личность», а экземпляры Person «составлены» с другими экземплярами «Person» для формирования семейств. – Dennis
Привет, теперь, когда вы указываете, что понятие сына/родителя не имеет большого смысла. Однако я попытался изменить имена на Son/Parent, чтобы объяснить это более четко. Фактически, эти классы являются частью метода Factory. Я хочу создать в игре как новые CHARACTERS, так и новые ITEMS. Я создал «ObjectFactory» (как родительский), который будет фильтровать, когда хочет создать ITEM или CHARACTER. И два подкласса 'ItemFactory' и' CharacterFactory', которые будут атрибутами 'ObjectFactory'. Тогда в зависимости от случая будет использоваться '.createObject (...)' либо 'ItemFactory', либо' CharacterFactory'. – lllllll
Вам не нужно ничего фильтровать. ObjectFactory должен быть абстрактным, и если пользователь хочет создать элемент, ему следует просто использовать ItemFactory. – Dennis