gpt4 book ai didi

c++ - 比较类和对象的 vector 时如何定义==运算符?

转载 作者:行者123 更新时间:2023-12-01 15:05:15 25 4
gpt4 key购买 nike

当 vector 具有相同颜色的3倍以上时,我希望我的程序停止。
在这里,我使用了“if(b == all_colors [i])”,但出现错误。
这是因为我没有使用模板吗?我需要重写整个代码吗?

#include<iostream>
#include<string>
#include<sstream>
#include<vector>

using namespace std;

class Bag
{
string marble;

public:
Bag(string marble)
{
this->marble=marble;
}

string add_marble()
{
return marble;
}
};

class Marble_exception
{
vector<Bag>all_colors;
int count=0;

public:
void add_color(Bag b)
{
for(int i=0; i<all_colors.size(); i++)
{
if(b==all_colors[i])
{
count++;
}
}

if(count>=3)
{
cout<<"Sorry, you already have three of these marbles.\n\n";
}
else
{
all_colors.push_back(b);
cout<<"added.\n\n";
}
}
};

最佳答案

不,您不必重写整个代码。该错误是因为operator==类没有Bag。 C++知道如何比较vector<T>,但前提是它也知道如何比较T。将此添加到您的代码

class Bag
{
...
// new code
friend bool operator==(const Bad& x, const Bag& y)
{
return x.marble == y.marble;
};
// new code
};
这段代码为 operator==定义了 Bag,因此现在将 ==用作 vector<Bag>应该没有问题。

关于c++ - 比较类和对象的 vector 时如何定义==运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63240979/

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