将对象声明为自身的成员变量

时间:2016-06-24 15:59:11

标签: c++ recurrence class-members

我正在编写一个游戏引擎(使用SFML库),我似乎无法让它发挥作用。我正在编写代码的GUI部分,我想在其内部声明一个相同类的对象(父/子,所以我可以将对象链接在一起)。除非完成实例化,否则我无法做到这一点。是否有某种临时的方式我可以强制孩子和父变量以某种方式工作?

#ifndef ELEMENT_H
#define ELEMENT_H

#include <iostream>

class Element
{
    public:
        Element();
    private:
        int id, position_x, position_y, pixel_x, pixel_y, width, height;

        Element parent;
        std::vector<Element> child;
};

#endif // ELEMENT_H

我得到错误:

include\Element.h|13|error: field 'parent' has incomplete type 'Element'|

2 个答案:

答案 0 :(得分:1)

你不能像在那里一样声明一个www.myHostDomain.com/mySpecifiedFormAction?myFirstFormField=myFirstFormValue&mySecondFormField=mySecondFormValue类型的集合变量。

但是,您可以拥有一个包含数据成员的类,该成员对自身指针 ...

Class <x>

答案 1 :(得分:1)

如果你想使用c ++ 11 / boost的智能指针功能,你可以parent类型Element*(或std::shared_ptr<Element>

你能想象一个元素里面有一个元素并且里面有一个元素的问题吗?它永远不会结束。通常,像这样的链有一个root元素,其中parent = NULL