2009-04-21 5 views
0

この定義されていない参照を外すことはできません。未定義参照?私が見ていないものはありますか? (C++、シングルトンクラス)

(screenshot of issue)

私はScene.hのプライベートセクションの下に次のコードを持っている:

static Scene * scene_; 

の#include「Scene.hは、」シーンのヘッダの非常に最初の部分です。 cpp

これは私が現時点で受けている唯一のエラーです、任意のアイデアですか?

私は他の情報を提供します。

+0

申し訳ありませんが、私の読書は少しオフでした。私は私の答えを削除しました。 –

答えて

7

あなたはまた、1つのコンパイル単位(一つだけ)でそれを定義する必要があります静的メンバを宣言します。

// a.h 
class A 
{ 
    static int x; 
}; 

// a.cpp 
int A::x = 0; 

クラス内の変数の宣言は、メモリを予約しません、ただ(コンパイラに伝えます他のコンパイル単位から)その名前でアクセス可能な変数がどこかで定義されるようになります。

1

なぜSceneの代わりにScene*を使用するのですか?基本的には「へのポインタに十分な領域を割り当てるのにstaticを使用してください」とし、実行時にnewというヒープ上にオブジェクトを配置します(これは決してdeleteとは限りません)。

は代わりに、単に静的を割り当て、Sceneオブジェクト初期化しています(。 - >となり)、その後

static Scene scene_; 

し、それに応じてシーンにすべての参照を変更する:

scene_.addObject(&object); 

これは簡単です起動するキーストロークが少なくなります。 C++では、JavaまたはC#と同じくらい頻繁にnewは必要ありません。