2017-02-12 17 views
-2

я попробовал все это дело просто в чистой, не смысл, на самом деле ... Вот проблемный код:повышение :: связать больной жалуется ничего

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) 

Compiler ошибка:

`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 пр ovided "серьезно? то почему тогда работает обычный вызов? Я не могу действительно решить, помощь будет оценена.

Спасибо.

+1

[Документах] (http://www.boost.org/doc/libs/1_63_0/libs/bind/doc/html/bind.html#bind.implementation. number_of_arguments): «Эта реализация поддерживает объекты функции с до девяти аргументов». –

+0

Если я только прочитал документы, прежде чем тратить свое время ... – WTFCoder123

+0

Не могли бы вы переписать свой комментарий в ответ, чтобы я мог принять? – WTFCoder123

ответ

1

Причина этой ошибки проста - вы пытаетесь связать слишком много аргументов.

Согласно documentation

This implementation supports function objects with up to nine arguments. This is an implementation detail, not an inherent limitation of the design.

+0

Спасибо, много человек, вы спасли мне много времени! – WTFCoder123