C ++ Невозможно использовать функцию получения, унаследованную от базового класса. - PullRequest
0 голосов
/ 29 августа 2018

Единственный способ получить доступ к Vehicle::color из класса Sedan - это переопределить метод getter. Я хочу получить к нему доступ из подкласса, не делая этого.

// Base Class
class Vehicle
{
protected:
    bool windowIsOpen[4];
    int  wheels;
    char *color;

public:
Vehicle(char *color) : color(color){};
char *getColor() { return color; }
};

class Sedan : Vehicle
{
public:
    Sedan(char* color) : Vehicle(color) {}
};

int main(int argc, char **argv){
    Sedan se("green");
    cout<<se.getColor()<<endl;
    return 0;
}

1 Ответ

0 голосов
/ 29 августа 2018

При определении своего класса вы написали class Sedan : Vehicle. По сути, это то же самое, что и class Sedan : private Vehicle. Другими словами, Автомобиль - это деталь реализации, которая не доступна пользователям Седана. Чтобы сделать это публичное наследование, вы должны написать class Sedan : public Vehicle.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...