所以我有两个类,book
和mainscreen
,book
公开继承自mainscreen
。
现在我想通过mainscreen的成员函数使用类书的公共成员函数。
这是我的代码:
class book;
class mainscreen:virtual public book
{
protected:
int logged;
public:
void printmenu();
void printhead();
void auth();
void logout();
mainscreen();
};
class book:public mainscreen
{
private:
int bookno,
days,
late_days;
long double price;
float fine_calc(int a,float b) // a -> late days , b -> fine per day
{
return a*b;
}
public:
book(); //const
void input();
void display();
void update();
};
主叫部分: -
void mainscreen::printmenu(){
int i;
printhead();
cout<<"\n\n\t Choose a Number to perform the corresponding task \n";
cout<<"\n1.Enter a new Book ";
cout<<"\n2.Issue a Book ";
cout<<"\n3.Return a book" ;
cout<<"\n4.Update Information for a book ";
cout<<"\n5.Information About books ";
cout<<"\n6.Logout ";
cout<<"\nEnter your choice: ";
cin>>i;
menuhandler(i);
}
void mainscreen::menuhandler(int choice){ //the no of choice selected
switch(choice)
{
case 1: printhead();
input();
case 2: printhead();
issuebook();
case 3: printhead();
returnbook();
case 4: printhead();
update();
case 5: printhead();
display();
case 6: logout();
default:
cout<<"Invalid Choice! Press Return to Try again. ";
getch();
printmenu(); // Reset to menu
}
}
当我尝试在book
的成员函数中使用类mainscreen
的公共成员函数时,出现以下错误:调用未定义的函数。
答案 0 :(得分:4)
你有:
Book
和MainScreen
然而,你得出了非常错误的结论,这些类应该相互继承(即彼此提供一些行为/属性)。你应该做的是创建一个第三类,这些类将继承(无论它们的共同点是什么)来自。
可能的基于接口的方法可能是:
class Displayable {
public:
virtual void display();
};
class Book : public Displayable {
...
};
class MainScreen : public Displayable {
...
};