首先我知道這在C++中是不可能的。但我希望有人能說出解決我的問題的方法。我有一個類,它代表了一個數學函數:引用成員函數
class myClass:
{
private:
public:
myClass() {};
double value(double, double){ /* doing some complicated calculation here */} };
double integrate { /*calc*/ return integral; };
}
在integrate()
我想創建一個以value()
參考一個結構。該結構的定義如下:
struct gsl_monte_function_struct {
double (*f)(double * x_array, size_t dim, void * params);
size_t dim;
void * params;
};
(我需要這個結構從GSL調用蒙特卡洛積分程序)
前面已經說過,我知道這是用C++禁止。但有沒有可能使用myClass的成員函數gsl_monte_function_struct
?如果myClass
不可能自我整合,是否可以從value()
以外的地方撥打gsl_monte_function_struct
作爲參考?提前致謝!
它應該是注意到調用該成員函數指針將需要指向成員的語法,例如' - > *'。在幾個問題和答案中有這樣的例子。 – WhozCraig
@WhozCraig這是一個很好的觀點。這就是爲什麼我將std :: bind提到能夠避免它的原因。 – Agentlien
感謝您的回答:我試過:'auto d = std :: bind(&myClass :: value,instance,std :: placeholders :: _ 1);'。這工作!但現在我想要做的:'double(* f)(double y)= d;'(這是gsl_monte_function的成員函數)。這失敗了!有任何想法嗎? – hansgans