请问个数组作为模板类型参数的有关问题
请教个数组作为模板类型参数的问题
以下两端程序,为什么第一段编译不通过,第二段能编译通过呢?
在VS2010和GCC4.72上做的测试
------解决方案--------------------
是你的语法不对。
第一个语法不对,编译器认为你在定义一个变量,但是这个变量被定义过了。
举个简单的例子。
class A
{
A(int){}
}
A(a); // 这个就是定义变量a。当然了,调用A的构造,但是你没有提供无参的构造函数。
A(5); // 而这个就是调用A构造而已,
你的问题,
去掉括号就好了。
test1<int(&)[10]>(a);
=》
test1<int(&)[10]> b(a);
以下两端程序,为什么第一段编译不通过,第二段能编译通过呢?
在VS2010和GCC4.72上做的测试
template<typename T1>
struct test1
{
test1(T1 b){}
};
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
test1<int(&)[10]>(a);
}
template<typename T1,typename T2>
struct test1
{
test1(T1 b,T2 c){}
};
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
test1<int(&)[10],int>(a,5);
}
------解决方案--------------------
是你的语法不对。
第一个语法不对,编译器认为你在定义一个变量,但是这个变量被定义过了。
举个简单的例子。
class A
{
A(int){}
}
A(a); // 这个就是定义变量a。当然了,调用A的构造,但是你没有提供无参的构造函数。
A(5); // 而这个就是调用A构造而已,
你的问题,
去掉括号就好了。
test1<int(&)[10]>(a);
=》
test1<int(&)[10]> b(a);