[英]C++ Invalid initialization error with 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])+ -1))+ 1)]'类型的表达式对类型'double(&)[3]'的引用的初始化无效
如何仍使用数组引用解决问题?
注:-如果我用具有typedef或std :: function <double(double(&)[N])>的结构替换指针参数,则问题是相同的。
这是ideone的完整示例
在您位于http://ideone.com/oWef7L的示例中,将第24行从
double x[M];
至
double x[N];
编译没有错误: http : //ideone.com/VouWlG
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.