如果大小未知,如何通过引用传递一维数组作为参数?

时间:2015-01-20 02:47:10

标签: c++ arrays pass-by-reference argument-passing

我知道如果你想通过引用传递一个已知大小的数组,你可以使用

void add(char (&arr)[60])

但我只知道数组的大小介于1到60之间。有什么办法吗?

2 个答案:

答案 0 :(得分:3)

您可以使用模板匹配任何类型和任何大小,并使用static_assert来检查在编译时传递的数组的大小:

template<typename T, std::size_t N>
void add(T (&arr)[N])
{
    static_assert(N <= 60, "wrong size");
    // ...
}

<强> Demo

答案 1 :(得分:0)

其他选项,不使用模板:

void add(char* arr , int size);

请记住,ad-hoc数组名称“衰减”为指向第一个元素的指针,因此一维数组可以作为指针传递。