C ++ find_if()无法将'this'指针从'const Client'转换为'Client&'

时间:2014-07-25 23:56:17

标签: c++

以下是给我一个错误。它突出显示'm'作为回报​​m-> GetAddress()并给出错误:

  

错误1错误C2662:'RakNet :: SystemAddress Client :: GetAddress(void)'   :无法将'this'指针从'const Client'转换为'Client&'

我不是真的在追问为什么我会收到这个错误。

list<Client*> battleQueue;

if (find_if(battleQueue.begin(), battleQueue.end(), [packet](const Client* m) -> bool { return m->GetAddress() == packet.systemAddress; }) == battleQueue.end())
{
}

1 个答案:

答案 0 :(得分:4)

如评论所示,您将m作为指向const对象的指针传递给lambda:const Client* m

编译器抱怨GetAddress()非const 成员函数(它试图从Client&指针获取this)访问const对象。

制作GetAddress()方法const

... GetAddress() const;