0

同じクラスのポインターの配列を静的変数として含めたい抽象クラスがあります。この配列は、後で派生クラスによって使用されます。

class Base {
  public:
    virtual int someValue() = 0;
    static Base* Bases[100];

    void Startup() {
      Bases[2] = this; // just a test
    };
};

class Derived : public Base {
  public:
    virtual int someValue() {return 10};
};

それでも、コンパイル時に次のエラーが発生しますUndefined symbols for architecture i386 "Bases", referenced from: Base::Startup()

どうすればこの結果を達成できますか?

4

1 に答える 1

3

array を宣言しBasesましたが、定義していません。別の場所、できれば cpp ファイルで定義する必要があります。

Base* Base::Bases[100];
于 2012-05-22T22:39:18.853 に答える