0

静的変数を公開しようとしています。これを public static と access 関数の両方で試してみStage::SetFramework( this );ましたが、Framework クラスでコマンドを使用したり、systemFrameworkpublic にして を使用したりしても、次のようStage::systemFramework = thisになります。

framework.obj||error LNK2001: unresolved external symbol "public: static class Framework * Stage::systemFramework" (?systemFramework@Stage@@2PAVFramework@@A)|

なぜこれが機能しないのかわかりません。明らかに何かが足りない 誰か助けてくれませんか?

#pragma once

#include "event.h"

#ifndef Framework
class Framework;
#endif // Framework

class Stage
{
  protected:
    static Framework* systemFramework;

  public:
    // static Framework* systemFramework;

    // Stage control
    virtual void Begin() = 0;
    virtual void Pause() = 0;
    virtual void Resume() = 0;
    virtual void Finish() = 0;

    virtual void Event(FwEvent *e) = 0;

    virtual void Update() = 0;
    virtual void Render() = 0;

    static void SetFramework( Framework* FrameworkObject )
    {
      systemFramework = FrameworkObject;
    };
/*
    static Framework* GetFramework()
    {
      return systemFramework;
    };
*/
};

ありがとう

4

2 に答える 2

4

staticクラス内のクラス データ メンバーのリストは、それらを宣言するだけです。それらはまだどこかで定義されている必要があります。この定義を 1 つの .cpp ファイルに入れます。

Framework *Stage::systemFramework;
于 2013-06-22T12:22:02.770 に答える