Mam klasę o nazwie Reciever
, która ma funkcję o nazwie recieve(const Event *)
, gdzie Event
dziedziczy po BaseEvent
. Chcę utworzyć powiązanie z konkretnym wystąpieniem tej klasy. Instancja nazywa się rec
. Służą do tego I:Jak rzutować funkcję z argumentem pochodnym na funkcję z argumentem podstawowym?
void(Reciever::*func)(const Event *) = &Reciever::recieve;
auto recievePtr = std::bind(func, &rec, std::placeholders::_1);
Jednak gdy próbuję zapisać to w wektorze, muszę podać std::function
że trwa BaseEvent
jako wejście, a nie Event
, jak tak:
std::vector<std::function<void(const BaseEvent*)>>
Jak mogę rzucić recievePtr
, aby można było go poprawnie zapisać w wektorze? Czy to możliwe? Problem z wykorzystaniem wskaźnika funkcji w BaseEvent
jest to, że może mieć wiele Reciever
recieve()
metod z różnych klas pochodnych oparte na BaseEvent
Hmm, to usuwa nadmiar wiązania. Zastanawiam się, czy jest lepszy sposób. – user975989