Страницы

Поиск по вопросам

среда, 13 февраля 2019 г.

Инициализация статического члена в main

Как инициализировать неконстантный статический член класса до создания экземпляра класса в функции main?
Например:
class A { protected: static int x; A(){} public: }; class B: public A { };
int main() { // нужно инициализировать x здесь B b; }


Ответ

Добавьте статическую функцию, которая будет присваивать значение x и вызывайте её:
class A { protected: static int _x; A() {} public: static void InitX(int x) { _x = x; } };
В main
int main() { A::InitX(5); B b; }
Если нужна именно инициализация, то Вы не можете контролировать то, когда она будет выполнена, но она обязательно будет выполнена до main.
В Вашем коде, кстати, как раз не хватает инициализации, а без неё код не соберётся. Добавьте в глобальной области видимости следующее:
int A::x = 0;

Комментариев нет:

Отправить комментарий