C++一般是不允许数组作为函数形参,它会悄悄把数组形参转化为指针,因此,我们在写这些函数的时候,往往要多加一个size参数,表示数组的大小,如:
void func(int arr[], int size);
但是一种情况例外,那就是数组引用作为函数形参:
void func(int (&arr)[10]);
但这样做有个很大的缺陷,就是只能用固定大小的数组,而我想让它能让任意大小的数组都可以使用。于是我想,用模板:
template <int size>
void func(int (&arr)[size]);
但是,编译通不过,说是不能引用zero size的数组。于是我用改用带默认值的class模板:
template <int size = 10>
class Array{
public:
void func(int (&arr)[size]);
};
依旧是同样的错误,那我只好用全局变量:
static int size = 10;
void func(int (&arr)[size]);
森栏
繁华开满天机
相关分类