class Base {
public:
Base(int a, int b);
};
class Derived : public Base {
private:
static std::pair<int, int> determine_a_and_b_(int k);
public:
explicit Derived(int k);
};
Derived::Derived(int k) :
// a, b from determine_a_and_b_(k)...
Base(a, b) { }
Есть ли способ вызова determine_a_and_b_
в конструкторе Derived
класса, чтобы получить значения a
и b
, перед вызовом Base::Base
?Выполнение кода перед вызовом конструктора базового
Похоже, что единственный способ был бы реорганизовать Base
так, что он может быть сначала по умолчанию, возведенный в нулевой объект, а затем инициализируются a
и b
позже, как
Derived::Derived(int k) : Base() {
Base::init_(a, b);
}
Есть ли лучший способ сделать это, без необходимости менять Base
?
Редактировать - сделали determine_a_and_b_
статическую
Не будет '' determine_a_and_b_' и create_base' должны быть 'static', чтобы избежать зависимости от неинициализированный объект? – melpomene
@melpomene хороший звонок. Обновлен ответ. – NathanOliver