我想使用带数组的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);
}
答案 0 :(得分:6)
布尔a [m];被称为可变长度数组,在C ++中不受支持。
但是,如果您使用const unsigned int
作为容量或#define
作为容量,则它将是本地存储中的数组。
如果您想要一个长度在运行时确定的数组,请考虑使用std::vector
。