我有一個global.h看起來像:如何初始化的extern變量命名空間中的
#pragma once
#include <memory>
namespace qe
{
class SubSystemA;
class SubSystemB;
class SubSystemC;
namespace Systems
{
extern std::unique_ptr<SubSystemA> gSubSystemA;
extern std::unique_ptr<SubSystemB> gSubSystemB;
extern std::unique_ptr<SubSystemC> gSubSystemC;
}
}
現在我不知道如果我能在我的main.cpp初始化,但瓦特/電子我在做,它不工作...請諮詢。以下是主要的樣子:
#include "SubSystemA.h"
#include "SubSystemB.h"
#include "SubSystemC.h"
#include "global.h"
int main()
{
extern std::unique_ptr<qe::SubSystemA> qe::Systems::gSubSystemA;
extern std::unique_ptr<qe::SubSystemB> qe::Systems::gSubSystemB;
extern std::unique_ptr<qe::SubSystemC> qe::Systems::gSubSystemC;
qe::Systems::gSubSystemA = std::make_unique<qe::SubSystemA>();
qe::Systems::gSubSystemB = std::make_unique<qe::SubSystemB>();
qe::Systems::gSubSystemC = std::make_unique<qe::SubSystemC>();
return 0;
}
基本上,我得到「無法解析的外部符號」錯誤,我不知道如何解決它。任何幫助表示感謝,謝謝!
編輯:雖然解決這個問題很高興知道,但對此的備選建議值得歡迎。我只是想輕鬆(並不意味着全球化,但我不介意)訪問像對象這樣的子系統。
在CPP文件中刪除了'extern'聲明;你已經'#include「global.h」''了。將這些項目的定義添加到您的.cpp文件之一。您可以對定義使用初始化器,也可以像當前一樣使用賦值語句。 –
刪除使得它重新定義編譯錯誤。刪除整行(3 unique_ptr <>)仍然給我鏈接器錯誤編譯罰款。 – ChaoSXDemon