指向另一个实例的成员函数的函数指针
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();
注意 .* 和 ->* 运算符的使用
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();
注意 .* 和 ->* 运算符的使用