C ++函数指针的初始化错误无效

时间:2013-03-27 09:21:48

标签: c++ templates function-pointers

我正在使用指向模板函数的指针,这些函数有数组引用 参数,例如:

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的数组的特定情况,我得到以下错误(该情况不重要只解释了[ 3]中的错误)

错误:从'double [(((sizetype)(((ssizetype)dim [1])的表达式表达式'double(&amp;)[3]'类型的引用无效初始化+ -1))+ 1)]'

如何使用数组引用解决问题?

注意.- 如果我用一个带有typedef或std :: function&lt;的结构替换指针参数double(double(&amp;)[N])&gt;问题是一样的。

这是ideone

的完整示例

1 个答案:

答案 0 :(得分:0)

http://ideone.com/oWef7L的示例中

改变第24行

double x[M];

double x[N];

编译时没有错误:http://ideone.com/VouWlG