class Foo
{
public:
const int x;
};
class Bar
{
private:
const int x;
};
Выход:
test.cpp:10:13: warning: non-static const member ‘const int Bar::x’ in class without a constructor [-Wuninitialized]
Почему Bar
выдавать предупреждение, но Foo
нет (очевидно, из-за квалификатора доступа, но какова логика?).
С этими определениями, так как Foo::x
является общедоступным, вы можете Foo
с чем-то вроде:
Foo f { 0 }; // C++11
или же
Foo f = { 0 };
Вы не можете сделать это для Bar
,
Других решений пока нет …