我是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'。
任何人都可以帮助我如何做到这一点。我想我必须用指针做点什么吗?
答案 0 :(得分:0)
memberclassfunction必须是mainLibrary中的虚函数,这意味着mainLibrary将成为一个接口,您将无法实例化它。
答案 1 :(得分:0)
memberclassfunction
和lendingclassfunction
都不是类mainLibrary
的成员,这就是编译器为您提供这些错误的原因。我认为你的目的是制定这些功能virtual
。
每当班级B
继承自班级A
时,前者会获得后者的成员,而不是相反。
答案 2 :(得分:0)
通常,让基类依赖于其子类中的方法并不是一个好主意。但是,如果你必须这样做,你总是可以将this
转换为子类,如果转换成功,那么你可以调用该方法。
lending *lendingThis = dynamic_cast<lending *>(this);
if (lendingThis) {
lendingThis->lendingclassfunction();
}