C++ 不能使用从基类继承的getter函数

标签 c++ oop inheritance

我可以从 Sedan 类中访问 Vehicle::color 的唯一方法是重新实现 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;
}

最佳答案

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

关于C++ 不能使用从基类继承的getter函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52070384/

相关文章:

C++放置new、继承和析构函数

Java ArrayList 向下转型

oop - 为什么依赖注入(inject)比使用工厂更好?

c++ - 输入一定数量后的垃圾值

c++ - C++ 中循环移位(旋转)操作的最佳实践

c++ - 为什么我们需要 std::initializer_list 的私有(private)构造函数?

oop - 在方法中对参数进行排序有哪些约定?

c# - 调用二级基类构造函数

javascript - 为什么 instanceof 在 Javascript 中为子对象返回 false

java - 为什么 Java 不允许降低父方法的可见性,但允许增加父方法的可见性?