C2248 - От 2 до наследства
У меня 3 класса, один унаследован другим. А-> В-> С. A имеет защищенную функцию-член, которую я пытаюсь установить с помощью C.
Я получаю C2248 - Ошибка C2248 "A::status": невозможно получить доступ к недоступному члену, объявленному в классе "A" Ассоциации
Разве мне не разрешен доступ к переменной в классе C?
class A {
public:
A();
~A();
protected:
char status[4];
};
class B: class A {
public:
B();
~B();
};
class C: class B {
public:
C(char newStatus[4]);
};
C::C(char newStatus[4])
{
this.status = newStatus;
}
1 ответ
Стратегия наследования по умолчанию является частной. Это означает, что status
превратится в частного члена в B
и будет недоступен в C
см. Различие между частным, публичным и защищенным наследованием для получения дополнительной информации. Следовательно, вы хотите наследовать публично. Также массивы не поддерживают присваивание, используйте std::array
вместо.
#include <array>
class A {
public:
A();
~A();
protected:
std::array<char,4> status;
};
class B : public A {
public:
B();
~B();
};
class C : public B {
public:
C(std::array<char,4> const &newStatus);
};
C::C(std::array<char,4> const &newStatus) {
this->status = newStatus;
}