- Почему компилятор дает мне ошибку, когда я не инициализирую значение статической переменной-члену? Не следует ли инициализировать значение 0?
- Почему я должен инициализировать переменную-член за пределами класса? (это незаконно, потому что если вы это сделаете и измените значение этой статической переменной-члена внутри основной функции, и вы создадите объект этой классы, она будет переназначать статическую переменную матрицы на старое значение), тогда как константный статический член переменная законна быть инициализирована внутри класса (и это возможно, потому что вы не можете изменить значение этой статической переменной-члена в любом случае)?
Ошибка: неопределенная ссылка на CLASS_NAME ::инициализация статических членских переменных C++
Можете ли вы опубликовать код и ошибку компилятора? – hmjd
@hmjd: undefined ссылка на class_name :: a – AlexDan
Примечание: это * linker *, дающий вам ошибку, а не компилятор. Это тот же эффект, что и объявление (свободной) глобальной переменной как «extern» в заголовке, но не определение ее в файле .cpp. Глобальная переменная должна иметь согласованную ячейку памяти, известную всем единицам компиляции, иначе они не будут видеть изменения друг друга в ее значении. Таким образом, он должен иметь внешнюю связь и быть определен точно один раз. Это * не * как переменная 'static' (локальная единица компиляции). – pmdj