我試圖使一個單(鹼)類:C++:Singleton類模板導致鏈接錯誤?
template<typename SUBCLASS>
class Singleton {
public:
static SUBCLASS& get_instance() {
static SUBCLASS instance;
return instance;
}
};
此單例類是在頭文件中,其可以通過任何其他文件被包括在內。例如。一類可能是這樣的:
class MyClass : public Singleton<MyClass> {
public:
...
private:
MyClass() {
}
friend Singleton<MyClass>;
}
別的地方MyClass
可以這樣使用:
MyClass& instance = MyClass::get_instance();
好點:編譯工作。 壞點:鏈接失敗。
的錯誤信息是:
undefined reference to `MyClass::get_instance()'
我該怎麼辦錯了嗎?有沒有人提示?
感謝youvery多
問候
凱文
你使用什麼編譯器?它適用於我在Visual Studio 2013中。 – Sam
對我來說,這個代碼編譯和鏈接,除了MyClass :: MyClass()之外沒有任何問題需要公開。所有源文件都是構建的一部分嗎?這個類是屬於一個monolith可執行文件還是轉移到一個庫? – dmi