尝试比较字符串时,C ++中的运算符重载错误

时间:2013-10-28 08:46:12

标签: c++

我正在尝试重载我创建的类中的运算符<<,该类比较两个字符串,无论外壳如何。这是我的bool运算符

friend bool operator <<(const string& member, const string& player) {
  return toLowerCase(member) == toLowerCase(player);
}

程序在我的代码

中返回错误
current->name << member

现在current是指向包含字符串名称的节点的指针,member是在提示用户时通过引用传递的字符串。我得到的错误是

invalid operands to binary expression('string'(aka'basic_string<char>') and 'string')

2 个答案:

答案 0 :(得分:1)

错误消息表明它没有收到你的重载,而是试图在string上使用内置的bitshift运算符(当然也失败了)。鉴于您提供的信息,我不确定为什么。

无论如何,一个更好的想法是使用非成员,非运算符compare()函数 - 使用operator<<来比较字符串只会混淆任何看着的人的地狱你的代码(即使你,在几年的时间内)。

答案 1 :(得分:0)

将该声明移出您的班级,然后移除friend关键字:

bool operator <<(const string& member, const string& player)
{
     return toLowerCase(member) == toLowerCase(player);
}

Live code.