将参数中的函数\类传递给静态库

问题描述 投票:0回答:1

出现了实际问题,如何从主程序中通过一个函数的参数(在静态库中)获得一个类和另一个函数?

例如,这在主程序中有效,我想将此函数传输到静态库:

void CHAR :: Test (LPCHAR attacker, DWORD time) 
   {
       DWORD id = attacker-> GetPlayerID ();
   }

LPCHAR-主程序中的类

这是来自静态库:

void slibrary :: Test (XXXX attacker, char const * time, YYYY) 
   {
       DWORD id = attacker-> YYYY;
   }

LPCHAR:

typedef CHAR* LPCHAR;

CHAR:

class CHAR: public CEntity, public CFSM, public CHorseRider
{
}

XXXX在哪里-我需要获得LPCHAR类,该怎么做?

在哪里YYYY-获得GetPlayerID()功能,该怎么做?

或者它以某种方式有所不同?

c++ g++ freebsd
1个回答
0
投票

您的库中的签名与原始代码中的签名不同,但是似乎您希望能够通过使用成员函数指针来调用成员函数。示例:

class CHAR {
public:
    DWORD GetPlayerID() { return 1; }
};

class slibrary {
public:
    // YYYY is here a member function pointer 
    void Test(CHAR* attacker, DWORD time, DWORD (CHAR::*YYYY)()) {
        DWORD id = (attacker->*YYYY)();
        std::cout << id << '\n';
    }
};

int main() {
    CHAR a;
    slibrary sl;
    sl.Test(&a, 0, &CHAR::GetPlayerID);
}

输出:

1
© www.soinside.com 2019 - 2024. All rights reserved.