C ++无法使用从基类继承的getter函数

时间:2018-08-29 05:57:00

标签: c++ oop inheritance

我可以从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 :(得分:7)

定义类时,您写了class Sedan : Vehicle。这实际上与class Sedan : private Vehicle相同。换句话说,Vehicle是一个未向Sedan用户公开的实现细节。要公开继承,您应该编写class Sedan : public Vehicle