免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: cxytz01
打印 上一主题 下一主题

[C++] 模板类static成员变量怎么初始化 [复制链接]

论坛徽章:
17
处女座
日期:2013-08-27 09:59:352015亚冠之柏太阳神
日期:2015-07-30 10:16:402015亚冠之萨济拖拉机
日期:2015-07-29 18:58:182015年亚洲杯之巴勒斯坦
日期:2015-03-06 17:38:17摩羯座
日期:2014-12-11 21:31:34戌狗
日期:2014-07-20 20:57:32子鼠
日期:2014-05-15 16:25:21亥猪
日期:2014-02-11 17:32:05丑牛
日期:2014-01-20 15:45:51丑牛
日期:2013-10-22 11:12:56双子座
日期:2013-10-18 16:28:17白羊座
日期:2013-10-18 10:50:45
11 [报告]
发表于 2013-09-29 16:02 |只看该作者
回复 8# cxytz01


    template<class T> std::string  A <T>::i= "hello";

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
12 [报告]
发表于 2013-09-29 16:05 |只看该作者
回复 11# myworkstation


    貌似他不是说int换成string,而是说A<std::string>::i这个样子,说实话我不知道LZ为什么觉得这里有矛盾,对于不同类型的T是会生成不同的静态成员变量,你大可以%p打印其地址测试

论坛徽章:
7
天蝎座
日期:2013-09-28 10:45:42双子座
日期:2013-10-16 16:27:09射手座
日期:2013-10-23 10:21:32处女座
日期:2014-09-17 16:44:332015年亚洲杯之巴林
日期:2015-04-09 17:28:01冥斗士
日期:2015-11-26 16:19:0015-16赛季CBA联赛之山东
日期:2018-03-02 23:59:31
13 [报告]
发表于 2013-09-29 16:13 |只看该作者
本帖最后由 cxytz01 于 2013-09-29 16:15 编辑

回复 10# w_anthony

回复 11# @myworkstation

看来大家都误会了,我在写写。

template<class T>
class A {
public:
    static T i;   //i是T类型
};


template<class T> T A<T>::i = 这里填什么?  char?string?int?float?vector?map?pair?还是其他自定义对象。


   

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
14 [报告]
发表于 2013-09-29 16:18 |只看该作者
本帖最后由 w_anthony 于 2013-09-29 16:27 编辑

回复 13# cxytz01


    那就是什么都不要写了template <class T> T A<T>::i;
刚才漏一个A前面的T,补上

论坛徽章:
17
处女座
日期:2013-08-27 09:59:352015亚冠之柏太阳神
日期:2015-07-30 10:16:402015亚冠之萨济拖拉机
日期:2015-07-29 18:58:182015年亚洲杯之巴勒斯坦
日期:2015-03-06 17:38:17摩羯座
日期:2014-12-11 21:31:34戌狗
日期:2014-07-20 20:57:32子鼠
日期:2014-05-15 16:25:21亥猪
日期:2014-02-11 17:32:05丑牛
日期:2014-01-20 15:45:51丑牛
日期:2013-10-22 11:12:56双子座
日期:2013-10-18 16:28:17白羊座
日期:2013-10-18 10:50:45
15 [报告]
发表于 2013-09-29 16:19 |只看该作者
回复 13# cxytz01


    只要是T类型接受的初始化方式都可以写。具体写什么由T是什么来决定。

论坛徽章:
0
16 [报告]
发表于 2013-09-30 13:46 |只看该作者
948039985QQ群,这是一个讨论Linux技术和服务器技术平台,希望大家加入这个群一起讨论和学习,群主旨在提供一个Linux技术平台,为加入此群的人提供技术交流,同时希望高手,老手们加入,以帮助辅导那些刚入门的新手们,俗话说“助人乃快乐之本”,同时我们还欢迎成员讨论当前IT新技术话题,同样可以讨论技术管理和管理话题。此群是一个多元化的平台,学习技术的同时还可以了解管理方面的知识,促进群成员的全面发展,而不只是停留在技术层面。欢迎你们的加入!!!

论坛徽章:
0
17 [报告]
发表于 2013-10-07 16:54 |只看该作者
http://stackoverflow.com/questio ... in-the-header-file.
这里有个帖子说明为什么模板类实现要和头文件放在一起。
回复 2# kdkgod

对于楼主的要求,在模板文件中给出static定义: template <class T> T A<T>::i;  然后在使用的时候,直接赋值即可,如A<int>::i = 5;


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP