C++ boost::bind病了,无缘无故抱怨

C++ boost::bind病了,无缘无故抱怨,c++,boost,bind,C++,Boost,Bind,我已经尝试了所有的事情这件事完全没有意义,真的。。。 下面是有问题的代码: CRoom* pRoom = &mRooms[pClient->iCurChannel][pClient->iCurRoom]; pClient->bPendingOperation = true; pRoom->OnBattlePlayerRespawn(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);// doesnt copmla

我已经尝试了所有的事情这件事完全没有意义,真的。。。 下面是有问题的代码:

    CRoom* pRoom = &mRooms[pClient->iCurChannel][pClient->iCurRoom];
    pClient->bPendingOperation = true;
    pRoom->OnBattlePlayerRespawn(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);// doesnt copmlain
    pRoom->mMainData.mStrand.post(boost::bind(&CRoom::OnBattlePlayerRespawn, pRoom, pClient, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 55, 4563)); // complains, wtf?
OnBattlePlayerRespawn声明如下:

    void CRoom::OnBattlePlayerRespawn(CClient* pClient, uint32_t dwEquipItemSlot1, uint32_t dwEquipItemSlot2, uint32_t dwEquipItemSlot3, uint32_t dwEquipItemSlot4, uint32_t dwEquipItemSlot5, uint32_t dwSpecial1, uint32_t dwEquipItemSlot6, uint32_t dwEquipItemSlot7, uint32_t dwEquipItemSlot8, uint32_t dwEquipItemSlot9, uint32_t dwEquipItemSlot10, uint32_t dwSpecial2)
编译器错误:

    `Error      no matching function for call to `bind(void (CRoom::*)(CClient*, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t), CRoom*&, CClient*&, int, int, int, int, int, int, int, int, int, int, int, int)'`
    candidate expects 2 arguments, 15 provided
    pRoom->mMainData.mStrand.post(boost::bind(&CRoom::OnBattlePlayerRespawn, pRoom, pClient, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 55, 4563)); // complains, wtf?
“候选人期望2个论点,15个论点”是认真的吗?那为什么常规电话能起作用呢? 我真的解决不了,请帮忙


谢谢。

此错误的原因很简单——您试图绑定太多的参数

根据

此实现支持最多具有九个参数的函数对象。这是一个实现细节,而不是设计的固有限制


:“此实现支持最多有九个参数的函数对象。”如果我在浪费时间之前只阅读文档…请您在回答中重写您的注释,以便我可以接受?与6年前相关:可能重复