나는 같은 클래스에 대한 포인터의 배열을 정적 변수로 포함하고자하는 추상 클래스를 사용하고 있습니다. 이 배열은 나중에 파생 클래스에서 사용됩니다.추상 클래스의 정적 배열
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()
.
이 결과를 얻으려면 어떻게해야합니까?
'static'으로 선언 된 멤버는 클래스 외부에 정의되어야합니다. –
'std :: vector' 사용을 고려해야합니다. 그것은 훨씬 적은 일입니다. – chris