Я хочу передать метод в качестве аргумента метода, который принимает Int и возвращает силу:Как передать указатель на метод в качестве параметра?
void A::SetCallback(void (*callback)(int))
{
.....................
}
void B::test()
{
a->SetCallback(&B::Done); //
}
void B::Done(int i)
{
..........................
}
Внутри test()
я получаю эту ошибку:
Error 1 error C2664: cannot convert parameter 1 from 'void (__thiscall B::*)(int)' to 'void (__cdecl *)(int)'
Я видел несколько примеров на StackOverflow хау чтобы исправить это, но он использует элементы из C++ 11, к которым у меня нет доступа.
Как исправить это с помощью C++ 03?
Ваш 'SetCallback' принимает указатель на свободную функцию. Указатели на методы класса различны, поскольку они неявно берут указатель на объект в качестве параметра. – user463035818
Как вы могли бы назвать 'B :: Done' в' A', если бы вы смогли его принять? – Holt