有多个非常相似的函数,只是参数的第2唯长度不一样,如:
void F(int a[][10],int b[][10])
{
}
void F1(int a[][20],int b[][20])
{
}
用函数模板来实现,
template <size_t len> void TF(int aa[][len],int bb[][len])
看似没有问题,但是编译的时候会报错
error C2087: '<Unknown>' : missing subscript
解决办法:
把一个二维数组看成一个一维数组,每个元素指向一个长度为len的一维数组
template <size_t len>
void TF(int (* aa)[len], int (* bb)[len])
{
}
然后调用的时候
int as[2][10] ;
int ti[3][10];
TF<10>(as,ti);
注意,要把那个len显示实参化,否则认不出来的