Ich versuche, eine C++ Member-Funktion mit einer älteren C-Bibliothek unter Verwendung eines Funktionszeigers Schnittstelle - Ich kann nicht sehen, warum dies mit Link-Fehler kommt, kann jemand sehen Warum ?Problem mit der Verknüpfung, C++ Member-Funktion zu C Callback
Verbindungsfehler
/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'
kompilieren mit: g ++ callback.cpp -o Rückruf
#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;
}
vielen Dank! – Stonky
@Stonky: Wenn du mit meiner Antwort zufrieden bist, kannst du sie upvoten und akzeptieren, indem du auf das Häkchen [neben meiner Antwort] klickst ';)' –
werde ich - ich kann es anscheinend nicht tun, wenn es noch 6 Minuten dauert. – Stonky