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

标签 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'|

最佳答案

您不能声明 Class <x> 类型的集合变量就像你在那里一样。

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

#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

关于c++ - 将对象声明为自身的成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38017541/

相关文章:

c++ - 用于处理重复事件的开源库

c++ - 使用动态规划从背包中检索项目

c++ - 为什么不允许 "inlined"静态常量,整数除外?

c++ - 无法在 Mac 上发送超过 64 字节的 HID 功能报告

c++ - 为什么在这个宏中一个地方需要双磅而其他地方不需要?

c++ - STL SET 中项目的顺序因程序的不同运行而不同

ios - 当我从实例方法更改为类方法时,为什么不再允许使用 'self'?

c++ - 检测方 block opencv和c++

recursion - 如何导出函数段?

C++ : Base type member variables as References, 或指针