我似乎無法讓這個未定義的引用消失。未定義的參考?有沒有我沒有看到的東西? (C++,singleton類)
我下Scene.h的私人部分驗證碼:
static Scene * scene_;
有一個的#include「Scene.h」在場景的頭的第一個部分。 cpp
這是我目前收到的唯一錯誤,有什麼想法?
我會提供任何你想要的信息。
我似乎無法讓這個未定義的引用消失。未定義的參考?有沒有我沒有看到的東西? (C++,singleton類)
我下Scene.h的私人部分驗證碼:
static Scene * scene_;
有一個的#include「Scene.h」在場景的頭的第一個部分。 cpp
這是我目前收到的唯一錯誤,有什麼想法?
我會提供任何你想要的信息。
在聲明靜態成員,你還必須在一個編譯單元(也是唯一一個)定義它:
// a.h
class A
{
static int x;
};
// a.cpp
int A::x = 0;
在類的變量不會保留內存的聲明,只是告訴編譯器(來自其他編譯單元)將會有一個變量可以在某處定義的名稱訪問。
爲什麼要用Scene*
代替Scene
?你基本上說「使用static
爲指向Scene
的指針分配足夠的空間」,然後在運行時將這個Scene
對象與new
(以及我假設從來沒有delete
它)堆放在堆上。
相反,只是有靜態分配並初始化的Scene
對象:( - >變)
static Scene scene_;
,然後相應地變更爲現場的所有引用:
scene_.addObject(&object);
這種情況很容易並減少按鍵啓動。與Java或C#一樣,C++不需要new
。
對不起,我的閱讀理解有點偏離。我刪除了我的答案。 – 2009-04-21 20:42:12