公有多重继承问题 诚心求解 真心谢谢!!!
时间:2011-12-17
来源:互联网
#include <iostream>
#include <string >
using std::string ;
//abstr_emp
class abstr_emp
{
private:
string fname;
string lname;
string jop;
public:
abstr_emp();
abstr_emp(const string & fn,const string & ln,const string & j):fname(fn),lname(ln),jop(j){}
virtual void show() const;
virtual void setall() ;
virtual ~abstr_emp()=0 {}
friend std::ostream & operator<<(std::ostream & os ,const abstr_emp & e);
};
//employee
class employee:public abstr_emp
{
public:
employee();
employee(const string & fn,const string & ln,const string & j):abstr_emp(fn,ln,j){}
employee(const abstr_emp & e):abstr_emp(e){}
virtual void show()const;
virtual void setall();
};
class manege : virtual public abstr_emp
{
private:
int inchargeof;
protected:
int chargeof()const {return inchargeof;}
int & chargeof(){return inchargeof;}
public:
manege();
manege(const string & fn,const string & ln,const string & j,int a ):abstr_emp(fn,ln,j),inchargeof(a){}
manege(const abstr_emp & e,int a ):abstr_emp(e),inchargeof(a){}
manege(const abstr_emp & e):abstr_emp(e),inchargeof(0){}
virtual void show()const;
virtual void setall();
};
// fink
class fink : virtual public abstr_emp
{
private:
string reportsto;
protected:
const string report()const{return reportsto;}
string & report(){return reportsto;}
public:
fink();
fink(const string & fn,const string & ln,const string & j,string str ):abstr_emp(fn,ln,j),reportsto(str){}
fink(const abstr_emp & e ,string str):abstr_emp(e),reportsto(str){}
fink(const abstr_emp & e):abstr_emp(e),reportsto(){}
virtual void show() const;
virtual void setall() ;
};
//hingfink
class hingfink : public manege , public fink
{
};
问题:当我创建最后一个类hingfink的时候,为什么提示:虚拟函数 函数 "abstr_emp::show" 的重写不明确 ??用Vs2010 编写的时候,错误就在hingfink下面。
#include <string >
using std::string ;
//abstr_emp
class abstr_emp
{
private:
string fname;
string lname;
string jop;
public:
abstr_emp();
abstr_emp(const string & fn,const string & ln,const string & j):fname(fn),lname(ln),jop(j){}
virtual void show() const;
virtual void setall() ;
virtual ~abstr_emp()=0 {}
friend std::ostream & operator<<(std::ostream & os ,const abstr_emp & e);
};
//employee
class employee:public abstr_emp
{
public:
employee();
employee(const string & fn,const string & ln,const string & j):abstr_emp(fn,ln,j){}
employee(const abstr_emp & e):abstr_emp(e){}
virtual void show()const;
virtual void setall();
};
class manege : virtual public abstr_emp
{
private:
int inchargeof;
protected:
int chargeof()const {return inchargeof;}
int & chargeof(){return inchargeof;}
public:
manege();
manege(const string & fn,const string & ln,const string & j,int a ):abstr_emp(fn,ln,j),inchargeof(a){}
manege(const abstr_emp & e,int a ):abstr_emp(e),inchargeof(a){}
manege(const abstr_emp & e):abstr_emp(e),inchargeof(0){}
virtual void show()const;
virtual void setall();
};
// fink
class fink : virtual public abstr_emp
{
private:
string reportsto;
protected:
const string report()const{return reportsto;}
string & report(){return reportsto;}
public:
fink();
fink(const string & fn,const string & ln,const string & j,string str ):abstr_emp(fn,ln,j),reportsto(str){}
fink(const abstr_emp & e ,string str):abstr_emp(e),reportsto(str){}
fink(const abstr_emp & e):abstr_emp(e),reportsto(){}
virtual void show() const;
virtual void setall() ;
};
//hingfink
class hingfink : public manege , public fink
{
};
问题:当我创建最后一个类hingfink的时候,为什么提示:虚拟函数 函数 "abstr_emp::show" 的重写不明确 ??用Vs2010 编写的时候,错误就在hingfink下面。
作者: qq583906237 发布时间: 2011-12-17
因为你多重继承了,如果show要调用的话,调用谁的呢?
作者: badbirdboy 发布时间: 2011-12-17
那能帮我改改吗??谢谢……
作者: qq583906237 发布时间: 2011-12-17
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28