Возможно ли так наследоваться? У меня просто ошибки выскакивают:
class Human:public Node<Human>; //Здесь unknown template name 'Node' и expected '{' after base class list
template <class T>
class Node{
private:
T data;
QList<Node<T>*> childs;
QList<Node<T>*> parents;
public:
Node(){
qDebug( "Node construct" );
};
Node(T* newdata){
qDebug( "Node construct" );
data = *newdata;
};
T get_data(){ return data; }
void set_data(T new_data){data=new_data;}
void add_child(T* child){ childs.push_back(new Node(child));}
void add_parent(T* parent){parents.push_back(new Node(parent));}
QList<Node<T>*>* get_childs(){return &childs;}
QList<Node<T>*>* get_parents(){return &parents;}
~Node(){
}
};
class Human:public Node<Human>{ // А здесь redefinition of 'Human'
private:
int id;
Node<Human> *node = new Node<Human>();
Photo avatar;
QString firstname;
QString lastname;
QString description;
Gallery gallery;
QList<Event*> events;
public:
Human(){}
Human(QString firstname,QString lastname,QString description):firstname(firstname),lastname(lastname),description(description){};
QString get_firstname();
QString get_lastname();
Photo get_avatar();
QList<Event *> get_events();
Gallery get_gallery();
void change_firstname(QString);
void change_lastname(QString);
void change_description(QString);
void add_child(Human*);
void add_parent(Human*);
QList<Node<Human> *> *get_childs();
QList<Node<Human> *> *get_parents();
};
У вас в коде наблюдается циркулярная вложенность пообъектов. Класс Human
включает в себя Node<Human>
в качестве базового подобъекта, а Node<Human>
включает в себя Human
в качестве подобъекта data
. Это, разумеется, невозможно.
Как вы тут ни крутитесь, вы будете всегда упираться в попытку объявления объекта неполного типа в контексте, где неполный тип использовать не разрешается, или в невозможность дедукции типа или еще во что-то в этом роде.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Написал функцию, которая проверяет каждый символ строки до тех пор, пока не встретит не цифру или терминирующий нольЕсли встречается не цифра,...
Столкнулся со следующей функцией, автор использует её при записи в данных вvtk файл
Есть 2 связанных списка select со значениями от и до, реализованные с помощью select2:
Подскажите что я делаю неправильно и в чем моя ошибка