この未定義の参照をなくすことはできないようです。
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);
これはより簡単で、起動に必要なキーストロークが少なくて済みます。new
C++ は、Java や C# ほど頻繁には必要ありません。