【问题标题】:Pass function\class in parameter to static library将参数中的函数\类传递给静态库
【发布时间】:2020-04-20 11:02:06
【问题描述】:

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

例如,这是从主程序工作的,我想将此功能转移到静态库:

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-得到GetPlayerID()函数,怎么办?

或者它的工作方式有什么不同?

【问题讨论】:

  • 我对写静态库不是很熟悉,但是你能不能不把Test函数做一个模板?
  • 在问题中添加CHARLPCHAR的定义。
  • LPCHAR - 自定义类
  • 你在哪个操作系统上运行这个?
  • FreeBSD 9.2 发布

标签: c++ g++ freebsd


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-02-15
    • 2013-12-23
    • 2016-03-17
    • 2019-04-25
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    相关资源
    最近更新 更多