Инициализатор члена не указывает на нестатический член данных или базовый класс
Проблема с инициализацией защищенных членов родительского класса в C++
Я столкнулся с проблемой, когда пытаюсь инициализировать защищенный член родительского класса в списке инициализации конструктора производного класса, и не могу найти решение через Google.
Привожу следующий код для иллюстрации:
struct a {
float m_x;
float m_z; // Этот член не имеет спецификатора доступа и является приватным для структуры
public:
a(float x): m_x(x) {}
};
class b : public a {
b(float z): m_z(z) {} // Попытка инициализации m_z
};
Перед компиляцией на clang 3.2 я получаю следующую ошибку:
error: member initializer 'm_z' does not name a non-static data member or base class
b(float z): m_z(z) {}
Как я могу правильно инициализировать m_z
, чтобы избежать данной ошибки?
Когда действительно стоит использовать noexcept?
Возможно ли вывести тип переменной в стандартном C++?
Почему `std::initializer_list` не поддерживает оператор подиндексации?
Можно ли вручную определить преобразование для класса enum?
Стоит ли игнорировать предупреждение "-Wmissing-braces" от gcc/clang?