この未定義の参照をなくすことはできないようです。
Scene.h のプライベート セクションに次のコードがあります。
static Scene * scene_;
Scene.cpp のヘッダーの最初の部分に #include "Scene.h" があります。
これは私が現在受け取っている唯一のエラーです。何かアイデアはありますか?
その他必要な情報を提供します。
静的メンバーを宣言するときは、それを 1 つのコンパイル単位 (そして 1 つのみ) で定義する必要があります。
// a.h
class A
{
static int x;
};
// a.cpp
int A::x = 0;
クラス内の変数の宣言はメモリを予約しません。どこかで定義されたその名前でアクセスできる変数があることを (他のコンパイル ユニットから) コンパイラに伝えるだけです。
Scene*の代わりに a をScene使用する理由 あなたは本質的に「staticへのポインターに十分なスペースを割り当てるために使用する」と言ってSceneおり、実行時にそのSceneオブジェクトをヒープに配置しますnew(そして、決してdeleteそうではないと思います)。
代わりに、オブジェクトを静的に割り当てて初期化します。Scene
static Scene scene_;
それに応じてシーンへのすべての参照を変更します (-> になります。):
scene_.addObject(&object);
これはより簡単で、起動に必要なキーストロークが少なくて済みます。newC++ は、Java や C# ほど頻繁には必要ありません。