gpt4 book ai didi

c++存储指向未知类的成员函数的指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:12:37 24 4
gpt4 key购买 nike

我想存储一个指向对象的指针和一个指向它的已知签名方法的指针。如果我知道这个类,那么这个指针的类型是:

int (MyClass::*pt2Member)(float, char, char)

但是如果我不知道类型,我该如何存储指针呢?

我想做这样的事情:

myObject.callThisFuncLater(&otherObject, &otherObject::method)

如何在 myObject 中存储指向方法 method 的指针并稍后调用它?

最佳答案

如果您有权访问 TR1 STL 库扩展(在 gcc 和 Visual Studio 2008 及更高版本上可用),最简单的方法是。std::function 和 std::bind 可用于包装调用稍后调用。此功能在 boost 函数和 boost 绑定(bind)中也可用:

#include <functional>

class MyClass {
public:
template<typename T> callThisFuncLater(T& otherObject,
int(T::*)(float, char, char) method) {
return storedInvocation_ = std::bind(otherObject,
method,
std::placeholders::_1, // float
std::placeholders::_2, // char
std::placeholders::_3); // char
}

int callStoredInvocation(float a, char b, char c) {
storedInvocation_(a, b, c);
}

private:
std::function<int(float, char, char)> storedInvocation_;
};

关于c++存储指向未知类的成员函数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7786740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com