首页 > 解决方案 > 将参数中的函数\类传递给静态库

问题描述

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

例如,这从主程序工作,我想将此函数转移到静态库:

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;

字符:

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

XXXX 在哪里 - 我需要LPCHAR上课,怎么办?

YYYY-getGetPlayerID()函数在哪里,怎么做呢?

还是它的工作方式有所不同?

标签: c++g++freebsd

解决方案


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

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

推荐阅读