我遇到了以下問題。我有一個類:使用指向類方法的指針作爲函數的參數,但作爲函數指針,而不是指向方法的指針
class My_Class
{
public:
My_Class(void); // constructor
double * Return_Values(double x, double y); // returns a pointer to the array
}
我也有,我想其他類(需要出於某種原因),以確保從My_Class
類完全獨立的,但有一個需要類似My_Class::Return_Values(double x, double y)
的功能的方法。所以我決定嘗試通過一個函數指針:
class Independent_Class
{
public:
Independent_Class(); // constructor
void Crazy_Method(int a, int b, double * (*FunctionToOperate)(double,double));
}
現在我在代碼的主體如下:
double * (My_Class::*pt2Member)(double,double) = NULL;
pt2Member = &My_Class::Return_Values;
Fields = (My_Class_instance.*pt2Member)(0.0,0.0); // this works perfectly
現在我試圖欺騙一個位(是的,我知道函數指針與指向類成員的指針不一樣,但我仍試過)。
double * (*func)(double,double);
func=pt2Member; // Doesn't work
Independent_Class_instance.Crazy_Method(1,1, &(My_Class_instance.*pt2Member)) //Doesn't work
所以這個想法沒有奏效。哪裏不對?我能以某種方式做我想做的事嗎(讓這些類獨立)?
+1使用功能。 – Anthony
在我的Mac上不起作用。我安裝了gcc-46,#include完美地工作,但後來在std :: function引發了錯誤:std沒有成員函數。我需要安裝其他東西嗎?似乎對我來說不是一個好的解決方案,因爲我希望代碼儘可能通用,並且儘可能獨立於外部庫 –
Sleepyhead
@user您還必須啓用「-std = C++ 0x」編譯器選項。 – Antimony