由于循环依赖关系,我在另一个对象中声明外部对象时遇到问题。请考虑以下几点:
LevelEditor对象包含一个模块数组(所有模块都是editor_module的子模块):
#include "../Objects/editor_module.h"
#include "Modules/collisionGrid_module.h"
#include "Modules/HUD_module.h"
#include "Modules/IO_module.h"
#include "Modules/ledge_module.h"
#include "Modules/segment_module.h"
namespace g_editor
{
class LevelEditor
{
但是,模块需要返回编辑器才能使用其功能:
#pragma once
#include "../LevelEditor/LevelEditor.h"
extern g_editor::LevelEditor g_levelEditor;
namespace g_editor
{
class editor_module
{
在编译方面,存在循环依赖问题。有我忽略的设计考虑吗?
发布于 2014-02-26 18:18:59
如果模块只需要对类的引用,那么它们不需要完整的类定义,只需要一个前向声明:
namespace g_editor {class LevelEditor;}
任何代码,例如模块的成员函数中的代码,都需要完整的定义(例如访问它的成员),它必须放在源文件中,该源文件包含头文件。但是模块的类定义本身不需要这样做。
https://stackoverflow.com/questions/22057706
复制