繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM