无法从子实例调用基类的公共方法

时间:2013-05-02 15:27:28

标签: c++ inheritance

我想在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;
}

4 个答案:

答案 0 :(得分:15)

class Daughter : Motherprivate继承。默认情况下,class继承就是这样。

class Daughter : public Mother正是您要找的。

答案 1 :(得分:4)

您需要使用public继承:

class Daughter : public Mother

答案 2 :(得分:2)

您需要使用访问说明符 public 继承母类。默认情况下,c ++将其视为私有。

答案 3 :(得分:2)

正如格里戈尔指出的那样,你应该明确地加上'公开'。

F.Y.I,C ++标准解决如下:

如果没有基类的访问说明符,则在使用类 - 键结构定义派生类时假定为public,并且在使用类 - 键类定义类时假定为private。