0

我试图<<在我创建的类中重载一个运算符,该类比较两个字符串,无论大小写如何。这是我的布尔运算符

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')
4

2 回答 2

1

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

无论如何,一个更好的主意是使用非成员、非操作员compare()函数——使用operator<<比较字符串只会让任何人在看你的代码时感到困惑(甚至你,几年后) .

于 2013-10-28T08:57:42.970 回答
0

将该声明移出您的班级并删除friend关键字:

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

实时代码。

于 2013-10-28T09:08:18.390 回答