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

时间:2014-04-07 16:01:40

标签: c++ class oop

我是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'。

任何人都可以帮助我如何做到这一点。我想我必须用指针做点什么吗?

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

memberclassfunctionlendingclassfunction都不是类mainLibrary的成员,这就是编译器为您提供这些错误的原因。我认为你的目的是制定这些功能virtual

每当班级B继承自班级A时,前者会获得后者的成员,而不是相反。

答案 2 :(得分:0)

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

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