Estoy intentando conectar una función de miembro de C++ con una biblioteca de C heredada que toma un puntero de función. No veo por qué esto sigue apareciendo con errores de enlace. ¿Alguien puede verlo? por qué ?Problema con la vinculación, función de miembro de C++ a devolución de llamada de C
errores de enlace
/tmp/ccl2HY1E.o: In function `VerifyWrapper::verifyGlue(int)': callback.cpp:(.text._ZN13VerifyWrapper10verifyGlueEi[VerifyWrapper::verifyGlue(int)]+0xe): undefined reference to `VerifyWrapper::vfy'
/tmp/ccl2HY1E.o: In function `VerifyWrapper::set(Verify&)': callback.cpp:(.text._ZN13VerifyWrapper3setER6Verify[VerifyWrapper::set(Verify&)]+0xf): undefined reference to `VerifyWrapper::vfy'
compilar con: g ++ CallBack.cpp -o devolución de llamada
#include <iostream>
using namespace std;
class Verify
{
public:
int verify(int i) { return i * 2; };
};
class VerifyWrapper
{
public:
static int verifyGlue(int i) { return vfy->verify(i); };
static void set(Verify& v) { vfy = &v;};
private:
static Verify* vfy;
};
// legacy function
int func(int i, int(*f)(int))
{
int ret = f(i);
return ret;
}
int main(void)
{
int i = 10;
Verify v;
VerifyWrapper::set(v);
int ret = func(10, &VerifyWrapper::verifyGlue);
cout << "result : " << ret << endl;
return 0;
}
muchas gracias! – Stonky
@Stonky: Si está satisfecho con mi respuesta, puede revocarla y aceptarla haciendo clic en la marca de verificación [al lado de mi respuesta] ';)' –
. Aparentemente, no puedo hacerlo si durante otros 6 minutos. – Stonky