В C ++ вы не можете комбинировать объявление и инициализацию. Когда вы не указываете параметры конструктора operator_list
, вы не вызываете его конструктор по умолчанию: вы просто объявляете его. Вам также нужно инициализировать его в соответствующем файле C ++, например:
Equation.h
class Equation {
static Dictionary operator_list;
};
Equation.cpp:
Dictionary Equation::operator_list(1);
Обратите внимание на отсутствие static
в файле CPP: его там нет. Компилятор уже знает из объявления, что operator_list
является статическим.
Edit: у вас есть выбор со статическими константными членами целочисленных и перечислимых типов: вы можете инициализировать их в файле CPP, как в примере выше, или вы можете дать им значение в заголовке. Вам все еще нужно определить этот элемент в вашем файле C ++, но вы не должны давать ему значение во время определения.