所以,我有一個函數,稱爲容安瀾,這需要一個功能第一個參數:在C++中,如何將對象的方法作爲參數傳遞給函數?
int Romberg(double (*f)(double), ...);
執行時,它會應用傳遞函數幾個值。
在一類,我已經定義了下列方法:
double Funktion::q(double x){
return(sqrt(1.0+fd(x)*fd(x)));
};
void Funktion::compute_bogen(){
Romberg(q, ...);
};
哪裏fd
是從相同類的另一種方法。但是,這不起作用!我嘗試用以下方法修改代碼,最終成功地將該方法傳遞給Romberg函數;但隨後未申請傳遞函數:
int Romberg(double (Funktion::* &f)(double), ...);
void Funktion::compute_bogen(){
Romberg(&Funktion::q, ...);
};
我收到以下錯誤信息:
error C2064: term does not evaluate to a function taking 1 arguments
現在,我看不出如何讓沒有扔掉全班系統這項工作我建造了。
的問題是,你還需要通過實例來調用它。 http://blog.slaks.net/2011/06/delegates-vs-function-pointers-part-2-c.html/ – SLaks
您是否嘗試使用Romberg作爲朋友功能? –
你可以使你的函數'f'靜態或免費函數嗎? – Andrei