[英]How to pass a member function to a function used in another member function?
我發現了一些有關我的問題的信息,但是我還不太了解。 我需要做這樣的事情:
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)
這些指針與虛函數一起正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.