多类继承?

Aan*_*Aan 2 c++ oop class

根据下图,我编写了我的代码. 在此输入图像描述

这是我写的代码:

#include<iostream>
#include<string>
using namespace std;

class person
{
private:
    int code;
    string name;
public:
    void    setCode(int c) { code=c; }
    int getCode()          { return code; }
    void setName(string s) { name=s; }
    string getName()       { return name; }
};

class account : public person
{
private:
    double pay;
public:
    void    setPay(double p) { pay=p; }
    double getPay()          { return pay; }
};

class admin : public person
{
private:
    string experience;
public:
    void setExper(string e) { experience=e; }
    string getExper()       { return experience; }
};

class master : public account, public admin
{
};

int main()
{
    master mastObj;// create master object.
    mastObj.setName("John");
    system("pause");//to pause console screen, remove it if u r in linux
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译器显示以下错误:

Error   1   error C2385: ambiguous access of 'setName'
Error   2   error C3861: 'setName': identifier not found    
Error   3   IntelliSense: "master::setName" is ambiguous
Run Code Online (Sandbox Code Playgroud)

Naw*_*waz 7

当您使用多重继承时,它是C++ 中Diamond问题的典型示例.

解决方案是:虚拟继承

也就是说,你应该这样做:

class account : public virtual person 
{                   //^^^^^^^note this
   //code
};

class admin : public virtual  person
{                  //^^^^^^^note this
   //code
};
Run Code Online (Sandbox Code Playgroud)

我刚在这个网站上找到了很好的帖子,所以我会在这里重定向你的答案:

这也意味着,这个话题应该投票结束.