0

我发现了一些关于我的问题的东西,但我还不是很了解。我需要做这样的事情:

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)。所以我必须在一个类的函数成员上使用它。我理解了指向函数的指针和指向成员函数的指针之间的区别,但我不明白如何编写它。谢谢,很抱歉对问题的解释不佳。

4

1 回答 1

1

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

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)

这些指针与虚函数一样工作。

于 2013-07-01T16:13:22.863 回答