Есть в любом случае я могу изменить этот пример кодаИмитация статических конструкторов в C++?
#include <stdlib.h>
#include <iostream>
class Base {
public:
Base() {
if(!m_initialized) {
static_constructor();
m_initialized = true;
}
}
protected:
virtual void static_constructor() {
std::cout << "Base::static_constructor()\n";
}
private:
static bool m_initialized;
};
bool Base::m_initialized = false;
class Derived : public Base {
void static_constructor() {
std::cout << "Derived::static_constructor()\n";
}
};
int main(int argc, char** argv) {
Derived d;
return(EXIT_SUCCESS);
}
Так что Derived::static_constructor()
будет вызываться вместо Базы? Я хочу инициализировать кучу статических переменных, и наиболее логичным местом для этого является то, что находится в классе.
Только что понял, что я не могу использовать 'm_initialized', потому что в любом случае когда-либо инициализируется только один производный класс ... – mpen
Нужно ли мне в основном копировать код из базы в каждый производный класс? – mpen
Непосредственно; но есть способы получить то, что вы хотите. Нужны ли инициализаторы при запуске или первом экземпляре? – bdonlan