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

Lia*_*ona 2 c++ arrays

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

"模板参数演绎/替换失败".

如果我放的话它会起作用

bool a[3];
Run Code Online (Sandbox Code Playgroud)

但不是变量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);
}
Run Code Online (Sandbox Code Playgroud)

Tho*_*ews 6

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

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

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

  • 谢谢,我想这回答了我的问题.这是我第一次使用C++,而且我习惯于使用Java中的数组.我下次考虑使用`std :: vector`.也许我会用`const unsigned int`来试试. (2认同)