C++-C++模板类内二维数组引用初始化的问题
//一维数组的引用传递
#include <iostream>
#include<string>
using namespace std;
template<class T,int size>
void Print(const T (&a)[size])
{
for(int i=0;i<sizeof(a)/sizeof(T);++i)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
int main()
{
string ab[] = {"a1","a2","a3","a4","a5","a6"};
Print<string>(ab);
return 0;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
问题1:二维静态数组是可以的..写法就是下面这样..
#include <iostream>
#include<string>
using namespace std;
template<class T,int x,int y>
void Print(const T (&a)[x][y])
{
for(int i = 0; i < x; i++)
for(int j = 0; j < y; j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
int main()
{
string ab[][3] = {"a1","a2","a3","a4","a5","a6"};
Print<string>(ab);
return 0;
}
问题2就不知道了....
模板函数的参数是可以自动推断的,但模板类的参数不能自动推断。所以如果写成类的话,就必须完整写出需要的参数了。
可以定义一个静态模板函数返回一个模板类实例,不过如果要存在变量里面的话还是得明确写出参数。