gpt4 book ai didi

c++ - c2678 二进制 '==' 未找到采用左手操作数类型的运算符

转载 作者:行者123 更新时间:2023-11-30 01:53:31 29 4
gpt4 key购买 nike

我的问题已经好几天没有答案了...

我正在尝试搜索一个项目以便对其进行修改。对于“列表”,我需要重载 operator== 但我不明白我的错误。你能告诉我如何解决这个问题吗?

class Nation{
private :
short continent;
unsigned int population, superficie;
string pays, ville;
public :
list<Nation> lireRemplir(list<Nation>liste, const char nomALire[]);

Nation(short continent, unsigned int population, unsigned int superficie, string pays, string ville) {
..... // ok
}
Nation(){};
void modifierContinent(list<Nation> liste, string nomPays, short nouveauContinent);
bool operator == (Nation &); //?

};

bool Nation::operator == (Nation & autre) {
return this->pays == autre.pays;
}

void modifierContinent(list<Nation> liste, string nomPays, short nouveauContinent)
{
//Nation uneNation(0,0,0,nomPays,"");
for (list<Nation>::iterator il = liste.begin(); il != liste.end(); il++)
{
if (*il == nomPays){ cout << "found!"; }
}
}

int main()
{
list<Nation>liste;
liste=lireRemplir(liste, "Nation.txt"); //hidden but working
modifierContinent(liste, "FRANCE", 5);
}

最佳答案

这里:

if (*il == nomPays){ cout << "found!"; } 

nomPays 是字符串类型,但您为另一种 Nation 类型重载了运算符。没有采用 Nationstring 的重载 =

两种解决方案:

您可以重载到字符串的转换(不推荐)或创建一个接受字符串的构造函数。

最好的解决方案是为 pays 创建一个 getter 方法来执行 il->getPays() == nomPays。简洁明了。

关于c++ - c2678 二进制 '==' 未找到采用左手操作数类型的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23115356/

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