C++不能使用从基类继承的getter函数
Posted
技术标签:
【中文标题】C++不能使用从基类继承的getter函数【英文标题】:C++ Cannot use getter function inherited from base class 【发布时间】:2018-08-29 05:56:59 【问题描述】:我可以从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;
【问题讨论】:
getColor()返回颜色; 这似乎是一个错字。你需要使用public
继承class Sedan : public Vehicle ...;
无论如何是提供setter和getter而不是原始受保护变量的更好方法,但这不是问题的重点
【参考方案1】:
在定义你的类时,你写了class Sedan : Vehicle
。这实际上与class Sedan : private Vehicle
相同。换句话说,Vehicle 是一个不暴露给 Sedan 用户的实现细节。要进行这个公共继承,你应该写class Sedan : public Vehicle
。
【讨论】:
我明白了,我没有意识到默认情况下继承是私有的。class
的继承默认为private
,struct
的默认继承为public
它适用于类,而不适用于结构。以上是关于C++不能使用从基类继承的getter函数的主要内容,如果未能解决你的问题,请参考以下文章
C++派生类是不是可以从基类继承静态数据成员和静态成员函数?