C++:外部对象循环引用
C++: Extern Object Circular Reference
由于循环依赖关系,我在另一个对象中声明外部对象时遇到问题。请考虑以下事项:
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
{
在编译时,存在循环依赖问题。我是否忽略了设计考虑因素?
如果模块只需要对类的引用,那么它们不需要完整的类定义,只需要一个前向声明:
namespace g_editor {class LevelEditor;}
任何代码,例如在模块的成员函数中,需要完整的定义(例如访问它的成员)都必须进入源文件,其中包含标头。但是模块的类定义本身不需要它。
相关文章:
- 打破循环引用在C++中更优雅
- 如何编译使用循环引用的代码?
- 关于C++中引用计数和循环引用的概念
- CBasePin 递增对拥有过滤器的引用.循环引用?
- 使用带有循环引用的weak_ptr
- 如何避免成员回调和shared_ptr循环引用?
- std :: make_shared(),std :: feek_ptr和循环引用
- 由于具有循环引用的类中的unique_ptr或向量而导致核心转储
- 我的内存泄漏是由循环引用引起的吗?
- C++:外部对象循环引用
- 使用 std::weak_ptr 和别名构造函数中断循环引用:声音或有问题
- #ifndef是否可以防止循环引用编译器错误
- shared_ptr和循环引用
- boost::序列化和循环引用反序列化
- 两个类之间的循环引用
- 循环引用的问题
- C++11, shared_ptr.reset() 和循环引用
- 如何初始化 const 循环引用成员
- C++中两个类对象的循环引用
- 如何使用std::shared_ptr检测或避免循环引用