C++-C++模板类内二维数组引用初始化的问题

发布于 2016-12-06 09:51:02 字数 506 浏览 1177 评论 2

//一维数组的引用传递
#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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

瑾兮 2017-10-03 10:01:12

问题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就不知道了....

甜柠檬 2017-04-02 07:22:01

模板函数的参数是可以自动推断的,但模板类的参数不能自动推断。所以如果写成类的话,就必须完整写出需要的参数了。
可以定义一个静态模板函数返回一个模板类实例,不过如果要存在变量里面的话还是得明确写出参数。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文