`public` квалификатор доступа и` const`ness. `-Wuninitialized`

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 нет (очевидно, из-за квалификатора доступа, но какова логика?).

12

Решение

С этими определениями, так как Foo::x является общедоступным, вы можете Foo с чем-то вроде:

Foo f { 0 }; // C++11

или же

Foo f = { 0 };

Вы не можете сделать это для Bar,

12

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]