2017-02-12 1 views
-2

ich alles versucht haben, dieses Ding einfach rein ist nicht Sinn, wirklich ... Hier ist die problematische Code:boost :: bind ist krank beschwert sich für nichts

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 erklärte wie folgt:

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-Fehler:

`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? 

„Kandidat erwartet 2 Argumente, 15 pr egoided "ernsthaft? Warum funktioniert dann der normale Anruf? Ich kann wirklich nicht lösen, Hilfe würde geschätzt werden.

Danke.

+1

[Docs] (http://www.boost.org/doc/libs/1_63_0/libs/bind/doc/html/bind.html#bind.implementation. number_of_arguments): "Diese Implementierung unterstützt Funktionsobjekte mit bis zu neun Argumenten." –

+0

Wenn ich nur die Dokumente lese, bevor ich meine Zeit verschwende ... – WTFCoder123

+0

Könnten Sie bitte Ihren Kommentar in eine Antwort umschreiben, damit ich akzeptieren kann? – WTFCoder123

Antwort

1

Der Grund für diesen Fehler ist einfach - Sie versuchen, zu viele Argumente zu binden.

Nach der documentation

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

+0

Vielen Dank Mann, du hast mir viel Zeit erspart! – WTFCoder123

Verwandte Themen