Как инициализировать неконстантный статический член класса до создания экземпляра класса в функции 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;
Комментариев нет:
Отправить комментарий