由於循環依賴性,我遇到了在另一個對象中聲明外部對象的問題。考慮以下幾點:C++:Extern對象循環引用
的關卡編輯器對象包含的模塊陣列(所有模塊都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
{
在編譯時,存在循環依賴性問題。是否有我忽略的設計考慮因素?
可能希望查看轉發聲明。 –
我的理解是,前向聲明不允許訪問已聲明對象的函數 –
您在實現文件中包含頭部,以便您可以訪問函數但打破循環依賴關係。如果你使用內聯,它不是正確的解決方案。 –