C++ 如何将一个成员函数传递给另一个成员函数中使用的函数?

C++ 如何将一个成员函数传递给另一个成员函数中使用的函数?,c++,function-pointers,class-members,C++,Function Pointers,Class Members,我发现了我的问题,但我还不太明白。我需要这样做: class T { double a; public: double b; void setT(double par) { a = par; } double funct(double par1) { return par1 / a; } void exec() { b = extfunct(funct, 10);

我发现了我的问题,但我还不太明白。我需要这样做:

class T
{
    double a;
public:
    double b;
    void setT(double par)
    {
        a = par;
    }

    double funct(double par1)
    {
        return par1 / a;
    } 

    void exec()
    {
        b = extfunct(funct, 10);
    }
};

double extfunct(double (*f)(double),double par2)
{
    return f(par2)+5;
}

操作和功能只是一个例子,但结构就是这样。这种结构的原因是我有一个预构建的类,它可以找到给定函数的最小值(示例中是extfunct)。所以我必须在类的函数成员上使用它。我理解指向函数的指针和指向成员函数的指针之间的区别,但我不知道如何编写它。谢谢,很抱歉对问题解释得不好。

使用指向成员函数的指针:

struct Foo
{
    void f(int, int) {}
    void g(int, int) {}

    void execute((Foo::*ptmf)(int, int), int a, int b)
    {
        // invoke
        (this->*ptmf)(a, b);
    }
};
用法:

Foo x;
x.execute(&Foo::f, 1, 2);   // calls x.f(1, 2)
x.execute(&Foo::g, 2, 1);   // calls x.g(2, 1)

这些指针在虚拟函数中按预期工作。

编辑您的问题不要在评论中添加信息随机分号抽奖日…有一件事我不明白。在用法中定义foox;但我必须在类内部的成员exec()函数中使用它。我怎么能这么做呢。@TommasoFerrari:都在
(这个->*ptmf)
里。
->*
是一个运算符。您可以在任何实例上调用成员函数;对于这个例子,我只是选择了
这个
。对不起,我不明白。我的函数
extfunct
作为一个输出双精度函数,我真的不知道我的函数extfunct和另一个exec是如何实现的。再次抱歉,我正在试图理解。@TommasoFerrari:
double-extfunct((T::*ptfm)(double),double-par2){return(this->*ptmf)(par2)+5;}
谢谢!你真是太好了!