После решения этой простой проблемы мне пришлось спросить :
-> В файле H в классе ex определен статический член const, например. :
class ex {
const static int my_ex;
};
-> В файле CPP значение указывается
ex::my_ex = 32;
И тогда выдается ошибка «конфликтующие объявления» (а также «не называет тип»). Я понимаю, что определение в файле CPP также является объявлением, которое действительно создает конфликт, видимый со стороны компоновщика, НО почему только о спецификаторе const (и введите), а не статический? Мне нужно только написать
const int ex::my_ex = 32;
чтобы заставить его скомпилировать. Но не статично ... Почему бы и нет? Почему я не могу просто определить и не повторять объявление связанных шагов (тип, конкретные идентификаторы)?
static
никогда не используется для определений. - person πάντα ῥεῖ   schedule 18.04.2016struct X { static const int x = 42; };
- person SergeyA   schedule 18.04.2016static
отличается, потому что это не часть типа. - person Kerrek SB   schedule 18.04.2016extern int a; extern char a;
- person Kerrek SB   schedule 18.04.2016const
нужно дать снова, либо почемуstatic
не. (Или почему есть несоответствие.) Что это такое? И почему? Какую проблему ты пытаешься решить? - person Lightness Races in Orbit   schedule 18.04.2016