gpt4 book ai didi

c++ - 指向函数成员的指针

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

我正在尝试使用指向函数成员的指针来做一些事情,但我无法弄清楚它是如何工作的。

我有一个看起来像这样的 A 类

class A
{
public:
float Plus (float a, float b) { return a+b; }
float Minus (float a, float b) { return a-b; }
float Multiply(float a, float b) { return a*b; }
float Divide (float a, float b) { return a/b; }
};

我想声明一个指向 A 的指针,然后将指向 A 的一个成员的函数指针传递给另一个函数。

像这样的东西:

void Will_Get_Function_Pointer(float a, float b, float (A::*pt2Func)(float, float))
{
(...)
}

我会用这样的方式调用它

A* myA = new A;
Will_Get_Function_Pointer(1.00,2.00, &myA->Minus)

我不能使用静态/常量成员,因为在我的最终实现中,A 将指向 A 对象集合中的特定 A,看起来像这样

vector<A> vecA;
myA = &vecA[xxx]

这样做很失败

typedef  float (A::*pA)(float x, float y);
pA p = &myA->Minus;

编译器告诉我使用 &A::Minus 但这对我不起作用。

我什至可以这样做吗?

干杯

最佳答案

A* myA = new A;
Will_Get_Function_Pointer(1.00,2.00, &myA->Minus)

你不能。你应该使用像

void Will_Get_Function_Pointer(A* object, float a, float b,
float (A::*pt2Func)(float, float))
{
(object->*pt2Func)(a, b);
}

并将其称为

A* myA = new A;
Will_Get_Function_Pointer(myA, 1.00, 2.00, &A::Minus);

简单的例子。

http://liveworkspace.org/code/79939893695e40f1761d81ba834c5d15

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

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