C ++使用模板进行数组调用

时间:2015-11-14 16:49:35

标签: c++ arrays

我想使用带数组的call-by-reference并在这里找到一些似乎可以解决我的问题。但是我现在将其更改为此并收到错误消息

"模板参数扣除/替换失败"。

如果我放

,它会起作用
bool a[3];

但不是变量m。

#include <assert.h>

template <typename T, int Size>
void dosth(T (&a)[Size])
{
    assert(Size > 2);

    a[2] = false;
}

int main()
{
    int m=3;
    bool a[m];
    dosth(a);
}

1 个答案:

答案 0 :(得分:6)

布尔a [m];被称为可变长度数组,在C ++中不受支持。

但是,如果您使用const unsigned int作为容量或#define作为容量,则它将是本地存储中的数组。

如果您想要一个长度在运行时确定的数组,请考虑使用std::vector