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

你已经声明了你的数组Bases,但你还没有定义它。您需要在其他地方定义它,最好是在 cpp 文件中:

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