У меня есть абстрактный класс, в который я хотел бы включить как статическую переменную массив указателей для этого же класса. Этот массив позже будет использоваться производными классами.Статический массив в абстрактном классе
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