繁体   English   中英

如何从父类调用子类函数?

[英]How to call child class function from parent class?

我是C ++语言的新手,并且正在做库管理系统。 我有这样的课程。 例如:

class mainLibrary{
  void library(){
  cout<<"Welcome to Our Library. Please choose following options"<<endl;
  cout<<"1. Member Section, 2. Lending Section"<<endl;
  if(userinput==1){
   memberclassfunction();//Error : use of undeclared identifier 'memberclassfunction'.
  }else{
  lendingclassfunction();//Error : use of undeclared identifier 'lendingclassfunction'.
 }
}
};

class Member:public mainLibrary{
 void memberclassfunction(){
 //do something
 }
};

class lending:public Member{
 void lendingclassfunction(){
 //do something
}
};

class mainSystem:public lending{
 //this is empty and inherit all. 
};
void main{
 mainSystem s1;
 s1.library();
}

我做了这样的事情。 但是在mainLibrary类中,如果我调用memberclassfunction(); 程序显示错误。 使用未声明的标识符“ memberclassfunction”。

谁能帮助我做到这一点。 我想我必须对指针做些事情对吗?

memberclassfunction必须是mainLibrary中的虚函数,这意味着mainLibrary将成为一个接口,您将无法实例化它。

memberclassfunctionlendingclassfunction都不是lendingclassfunction类的mainLibrary ,这就是编译器向您显示这些错误的原因。 我认为您的意图是使这些功能virtual

每当B类从A类继承时,前者将获得后者的成员,而不是相反。

通常,让基类依赖于其子类中的方法不是一个好主意。 但是,如果你必须这样做,你总是可以投this子类,如果转换成功,那么你可以调用该方法。

lending *lendingThis = dynamic_cast<lending *>(this);
if (lendingThis) {
    lendingThis->lendingclassfunction();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM