Who*_*ian 1 c++ inheritance multiple-inheritance diamond-problem
请不要在这里对这段代码中真正奇怪的工人层级提出质疑,我不知道为什么有人会想要这样的东西,但我决定给自己一个多重继承的练习,只是为了确保我完全理解它.所以这是结果.
using namespace std;
class Employee
{
protected:
string name;
public:
string getname()
{
return name;
}
void setname(string name2)
{
name = name2;
}
Employee(string name2)
{
name = name2;
}
Employee(){}
};
class Manager : public Employee
{
public:
string getname()
{
return ("Manager" + name);
}
Manager(string name2) : Employee(name2){}
Manager() : Employee(){}
};
class Supervisor : public Manager,public Employee
{
public:
Supervisor(string name2) : Manager(name2) , Employee(name2){}
Supervisor() : Manager() , Employee(){}
string getname()
{
return ("Supervisor" + Employee::getname());
}
};
Run Code Online (Sandbox Code Playgroud)
希望你能理解我在这里要做的事情.我得到了一些关于"衍生类'主管'和基类'员工'之间的模糊转换."那么我该怎么办?
实际上,你定义Supervisor
类的方式,它的对象将有两个类型的主题Employee
,每个主题来自它的基类.那是造成问题的原因.
解决方案是使用虚拟继承(假设您需要多重继承):
class Manager : public virtual Employee
Run Code Online (Sandbox Code Playgroud)
希望你在virtual
这里注意关键字.:-)