我怀疑这是不可能的,但我想我会问。假设我有一个带有方法的类:
class A {
public:
void b(int c);
};
我可以创建一个指向该成员函数的指针:
void (A::*ptr)(int) = &A::b;
(someAInstance.*ptr)(123);
我还可以滥用函数指针并创建一个A
直接接受参数的指针(我不知道这是否安全,但它适用于我的机器):
void (*ptr2)(A*, int) = (void (*)(A*, int))&A::b;
(*ptr2)(&someAInstance, 123);
我想要的是以某种方式对参数进行curry A
,并创建一个函数指针,它只接受一个,但在我预定义的特定实例上int
调用该方法。对于那个特定的函数指针,实例将保持不变,但可能有几个函数指针都指向同一个方法,但使用不同的实例。例如,我可以制作一个单独的包装函数:A::b
A
A
A::b
A
A* someConstantA = new A;
void wrapper(int c) {
someConstantA->b(c);
}
void (*ptr3)(int) = &wrapper;
现在我可以ptr3
在不知道A
将调用发送到哪个特定对象的情况下使用它,但我必须定义一个特殊的函数来处理它。我需要一种方法来为任意数量的A
实例创建指针,所以我不能像那样对其进行硬编码。这有可能吗?
编辑:应该提到,我被困在 C++03 领域,也不能使用 Boost