c++ 两个文件相互包含会导致无法通过正向声明修复的错误

4si2a6ki  于 2023-01-18  发布在  其他
关注(0)|答案(1)|浏览(99)

所以,读清楚...

// scene.h
#include "Entity.h"

class Scene
{
public:
   Entity createEntity() {
        return Entity(this);
   }
};

这就是Scene类,然后我们得到Entity

// entity.h
class Entity
{
    public:
        Entity(Scene* scene) {
            m_handle = scene->m_registry.create() // entt library
        }
};

我试着声明这些类,但是因为它们访问每个类的函数和类变量等等,这有点不可能。
我试图创建一个场景,持有实体。由于C++有这个奇怪的问题时,两个文件是包括对方,我真的不知道该怎么办,因为我的类必须访问对方的函数和变量等,向前声明没有真正工作...

zc0qhyus

zc0qhyus1#

1.在每个头文件中使用pragma:

#pragma once

1.或包括防护装置:
Scene.h

#ifndef PROJECT_SCENE_H
#define PROJECT_SCENE_H
// your scene class
#endif // PROJECT_SCENE_H

Entity.h

#ifndef PROJECT_ENTITY_H
#define PROJECT_ENTITY_H
// your entity class
#endif // PROJECT_ENTITY_H

相关问题