链接问题,c ++成员函数到C回调

Sto*_*nky 5 c++ static callback

我正在尝试使用函数指针将c ++成员函数与遗留C库连接起来 - 我无法理解为什么这会导致链接错误,有人能看出原因吗?

链接错误

/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'
Run Code Online (Sandbox Code Playgroud)

编译:g ++ callback.cpp -o callback

#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;
}
Run Code Online (Sandbox Code Playgroud)