Назовите виртуальный метод сразу после конструкции

Я должен назвать виртуальный метод для всех классов полученным из данного основного базового класса прямо после конструкции производного объекта. Но выполнение так в конструкторе базового класса приведет к чистому виртуальному вызову метода

Вот упрощенный пример:

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 не мог знать, как создать Загрузчик. Какие-либо идеи/обходные решения?

5
задан Vargas 20 October 2010 в 19:50
поделиться