одна из моих «любимых» неприятностей, когда кодирование на C ++ объявляет некоторую статическую переменную в моем классе, а затем смотрит на ошибку компиляции по поводу неразрешенной статической переменной (в прежние времена я всегда был чертовски напуган, что это значит) 1001 *
Я имею в виду классический пример:
test.h
class Test
{
private:
static int m_staticVar;
int m_var;
}
test.cpp
int Test::m_staticVar;
Что делает его на мой взгляд еще более запутанным, так это синтаксис этого определения, вы не можете использовать слово «static» здесь (поскольку static имеет другое значение при использовании в cpp, sigh), поэтому вы понятия не имеете (кроме статические члены-знания (например, работают так)) почему на самом деле определен некоторый тип int из класса Test и почему m_var - нет.
Насколько вам известно / почему это так? Я могу придумать только одну причину, и это облегчает жизнь компоновщика - то есть по той же причине, по которой вы не можете использовать нецелые константы (SomeClass m_var = кое-что). Но мне не нравится идея сгибать языковые возможности только потому, что какой-то части цепочки компиляции будет трудно ее съесть ...