Что я хочу сделать: запускать некоторый обязательный код всякий раз, когда экземпляр класса будет использоваться внутри программы. Этот код проверяет наличие требований и т. Д., И его следует запускать только один раз.
Я обнаружил, что этого можно достичь, используя другой объект в качестве статической переменной внутри конструктора. Вот пример для лучшей картинки:
class Prerequisites
{
public:
Prerequisites() {
std::cout << "checking requirements of C, ";
std::cout << "registering C in dictionary, etc." << std::endl;
}
};
class C
{
public:
C() {
static Prerequisites prerequisites;
std::cout << "normal initialization of C object" << std::endl;
}
};
Что меня беспокоит, так это то, что я до сих пор не видел подобного использования статических переменных. Есть ли недостатки или побочные эффекты, или я что-то упустил? Или, может быть, есть лучшее решение? Любые предложения приветствуются.