我想为类重载==
运算符,以便可以将类的属性与std :: string值进行比较。这是我的代码:
#include <iostream>
#include <string>
using namespace std;
class Message
{
public:
string text;
Message(string msg) :text(msg) {}
bool operator==(const string& s) const {
return s == text;
}
};
int main()
{
string a = "a";
Message aa(a);
if (aa == a) {
cout << "Okay" << endl;
}
// if (a == aa) {
// cout << "Not Okay" << endl;
// }
}
现在,如果字符串在运算符的右侧,则可以使用。但是如何重载==
以便在字符串位于运算符的左侧时也可以使用。
这里是link中的ideone代码。
答案 0 :(得分:5)
以std::string
作为第一个参数的运算符必须在类之外:
bool operator==(const std::string& s, const Message& m) {
return m == s; //make use of the other operator==
}
您可能还想创建Message::text
private
并将该运算符声明为类中的friend
。