2

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

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]'的引用的初始化无效< /p>

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

注意。-如果我用 typedef 或 std::function< double( double (&)[N] ) > 的结构替换指针参数,问题是一样的。

这是ideone的完整示例

4

1 回答 1

0

http://ideone.com/oWef7L的示例中, 将第 24 行从

double x[M];

double x[N];

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

于 2013-06-25T14:36:11.073 回答