2013-03-27 47 views
2

我與指針工作,模板函數,函數有數組引用 參數,例如:C++函數指針無效的初始化錯誤

template< size_t N > 
double MyFunction(double (&x)[N]); 

,我會使用以前的功能型像一個說法在另一個函數

template< size_t N > 
bouble BigFunction(double (* PtrFunc)(double (&)[N]), ...) { 
    double x[3]; 
    ... 
    // fill x 
    // call PtrFunc 
    double y = (* PtrFunc)(x); // error: ... 
    ... 
} 

在主程序我請double z = BigFunction(&MyFunction, ...)但是當我試圖用GCC 4.7.2編譯,我得到用於與N = 3的情況下(一個陣列的特定情況下,下面誤差僅爲不重要解釋t他[3]在錯誤)

錯誤:的類型的參考無效初始化 '雙(&)[3]' 從類型爲「表達雙[(((的SizeType)(((ssizetype)暗淡[ 1])+ -1))+ 1)]'

如何解決仍在使用數組引用的問題?

注:如果我通過一個結構一個typedef或具有一個std ::函數<更換指針參數雙(雙(&)[N])>問題是相同的。

在這裏,在你的榜樣ideone

+1

編譯器錯誤,我認爲案件實際上*很重要。你能告訴你如何調用'BigFunction()'和你在調用中使用的所有參數的聲明嗎? – Angew 2013-03-27 09:25:29

+0

相關?:http://stackoverflow.com/q/14729458/1458030 – qPCR4vir 2013-03-27 09:32:55

+0

我調用函數就像'BigFunction(&MyFunction)'和'BigFunction'裏面我有一個數組''double x [3] '並且我調用'(* PtrFunc)(x)',錯誤在這一行中提供 – aju 2013-03-27 09:36:34

回答