Как получить доступ к правильному члену класса?

#c #inheritance

#c #наследование

Вопрос:

Я просматривал этот фрагмент кода, и после выполнения я обнаружил, что все компилируется и выполняется нормально (для члена int-кода производного класса установлено значение 65). Однако мне было интересно, как можно получить доступ к члену кода символа производного класса?

 #include <iostream>
using namespace std;

class base {
public:
    base() : code('B') { }
    char code;
};

class derived : public base
{
public:
    int code;
};

int main(void)
{
    derived d;
    d.code = 65;
    std::cout << d.code;
};
 

Ответ №1:

Указав правильную область видимости для базовой переменной-члена, используя поиск по определенному имени следующим образом:

 d.base::code = 'x'
std::cout << d.base::code << 'n';
 

Для получения более подробной информации см. Этот раздел о поиске по определенному имени.