gpt4 book ai didi

c++ - 多类继承?

转载 作者:太空狗 更新时间:2023-10-29 23:41:45 25 4
gpt4 key购买 nike

根据下图,我写了我的代码。 enter image description here

这是我写的代码:

#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;
}

编译器显示了这些错误:

Error   1   error C2385: ambiguous access of 'setName'
Error 2 error C3861: 'setName': identifier not found
Error 3 IntelliSense: "master::setName" is ambiguous

最佳答案

Diamond Problem的经典例子在 C++ 中使用多重继承时。

解决方案是:Virtual inheritance

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

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

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

我刚刚在这个网站上发现了非常好的帖子,所以我会在这里将您重定向到这些答案:

这也意味着,这个主题应该被投票关闭。

关于c++ - 多类继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8340516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com