我想在C ++中尝试构造函数继承,它运行良好。但后来我发现我无法从女儿 类的实例中调用一个方法。 Visual Studio说
方法Mother :: ShowName不可用
尽管它是公开的,但就我而言,必须从儿童班获得。有什么我做错了吗?
class Mother{
protected:
char* name;
public :
Mother(char* _name){
name = _name;
}
void ShowName(){
cout << "my name is: " << name << endl;
}
};
class Daughter : Mother{
public:
Daughter(char* _name) : Mother(_name) {
}
};
int main(){
Daughter d1("Masha");
d1.ShowName();
return 0;
}
答案 0 :(得分:15)
class Daughter : Mother
是private
继承。默认情况下,class
继承就是这样。
class Daughter : public Mother
正是您要找的。 p>
答案 1 :(得分:4)
您需要使用public
继承:
class Daughter : public Mother
答案 2 :(得分:2)
您需要使用访问说明符 public 继承母类。默认情况下,c ++将其视为私有。
答案 3 :(得分:2)
正如格里戈尔指出的那样,你应该明确地加上'公开'。
F.Y.I,C ++标准解决如下:
如果没有基类的访问说明符,则在使用类 - 键结构定义派生类时假定为public,并且在使用类 - 键类定义类时假定为private。