我想以这种方式实例化数组长度:
#include <iostream>
using namespace std;
template<size_t M, size_t N>
void instanBoolArr(size_t M, size_t N)
{
bool a[M];
bool b[N];
}
int main(void)
{
size_t M = 1;
size_t N = 1;
instanBoolArr(M, N);
return 0;
}
但是clang编译器告诉我错误消息:
prog.cc:6:27:错误:“ M”阴影模板参数的声明 void instanBoolArr(size_t M ,size_t N)
prog.cc:5:17:注意:模板参数在此处声明 模板
prog.cc:6:37:错误:声明“ N”阴影模板参数 void instanBoolArr(size_t M,size_t N )
prog.cc:5:27:注意:模板参数在此处声明 模板
prog.cc:9:10:警告:未使用的变量'b'[-Wunused-variable] bool b [N];
prog.cc:8:10:警告:未使用的变量'a'[-Wunused-variable] bool a [M];
prog.cc:17:5:错误:没有匹配的函数可调用'instanBoolArr' instanBoolArr(M,N);
prog.cc:6:6:注意:候选模板被忽略:无法推断模板 参数“ M”无效instanBoolArr(size_t M,size_t N)
clang编译器的版本是7.0。
我想以这种方式实现它,但是我使用了C ++模板,但是在网上找不到对我有用的答案。
所以,如果不介意,PLZ会指出我的错并帮助我解决问题。
此致。
答案 0 :(得分:2)
编译器错误非常明显。您的函数参数正在掩盖您的模板参数。
将功能更改为:
template<size_t M, size_t N>
void instanBoolArr()
{
bool a[M];
bool b[N];
}