指向另一个实例的成员函数的函数指针

Function pointer to memberfunction of other instace

class A
{
private:
    int _i;

    int calc() { return i; }

public:
    int (*get)() = &A::calc;

    A(int i){ _i = i; }
    A(A *a ) { get = a->get; }
};

int main(){
    A a = new A(5);
    A b = new A(a)
}

嗨,我想我有一个特殊的问题。我不知道正确的标签,所以我尽量描述最好的:

有一个 class A 具有一个函数 calc 和一个函数指针 get,具有相等的 calc 占用空间。通常 get 应该引用它自己的实例的 calc 但在特殊情况下它应该被重定向到另一个实例的 calc 。有没有办法实现它?

谢谢。 (语法为伪代码)

编辑:背景是 calc 对很多不同的成员变量进行了一些复杂的计算,我只想得到结果

确定:

std::function<int()> get = std::bind(&A::calc, this);

稍后,您可以将其更改为指向另一个实例"b":

get = std::bind(&A::calc, &b)

另请注意,当您尝试将成员函数指针 (&A::calc) 分配给普通函数指针 (int(*)()) 时,您的代码将无法编译。声明成员函数指针的语法是 int(A::*get)(),但是如果你手头有一个实例,你将只能调用该成员函数指针(除非你像在解决方案中那样绑定它我在上面提供了)。

instance.*get();

or

pointer ->* get();

注意 .* 和 ->* 运算符的使用