Я должен назвать виртуальный метод для всех классов полученным из данного основного базового класса прямо после конструкции производного объекта. Но выполнение так в конструкторе базового класса приведет к чистому виртуальному вызову метода
Вот упрощенный пример:
struct Loader {
int get(int index) { return 0; }
};
struct Base{
Base() {
Loader l;
load( l ); // <-- pure virtual call!
}
virtual void load( Loader & ) = 0;
};
struct Derived: public Base {
int value;
void load( Loader &l ) {
value = Loader.get(0);
}
};
Я могу звонить load
в Derived
конструктор, но Derived
не мог знать, как создать Загрузчик. Какие-либо идеи/обходные решения?