2012-05-22 2 views
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().

이 결과를 얻으려면 어떻게해야합니까?

+0

'static'으로 선언 된 멤버는 클래스 외부에 정의되어야합니다. –

+0

'std :: vector' 사용을 고려해야합니다. 그것은 훨씬 적은 일입니다. – chris

답변

3

배열 Bases을 선언했지만 아직 정의하지 않았습니다. 다른 곳에서 cpp 파일로 정의해야합니다.

+0

그 간단한가요? 와우, 나는 그것을 이해하는 데 너무 오래 걸렸다는 것을 믿을 수 없다. 고맙습니다! – Jaliborc