免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2002 | 回复: 1
打印 上一主题 下一主题

[C++] 这个模板方法该怎么写,老编译不过。。。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-25 16:23 |只看该作者 |倒序浏览
  1. #include <stdio.h>
  2. template<typename ITEM, int SIZE>
  3. class Array
  4. {
  5. public:
  6.         class Item{
  7.         public:
  8.                 Item(Array<ITEM, SIZE>& array) : _M_array(array) {
  9.                         array._M_size = SIZE;
  10.                 }

  11.                 void PrintSize()
  12.                 {
  13.                         printf("array item = %d\n", _M_array._M_size);
  14.                 }

  15.         protected:
  16.                 Array<ITEM, SIZE>& _M_array;
  17.         };

  18. public:
  19.         int size() const;
  20.         Item Get(int index);

  21. protected:
  22.         ITEM _M_items[SIZE];
  23.         int _M_size;
  24. };

  25. template<typename ITEM, int SIZE>
  26. inline int Array<ITEM, SIZE>::size() const { return SIZE;}

  27. template<typename ITEM, int SIZE>
  28. inline Array<ITEM, SIZE>::Item Array<ITEM, SIZE>::Get(int index)    // 编译时这里总报:错误:expected initializer before ‘Array’
  29. {
  30.         return Item(*this);
  31. }
复制代码
把报错的方法和类声明卸载一起是可以的,但分开就报错

论坛徽章:
0
2 [报告]
发表于 2014-06-25 16:43 |只看该作者
中文世界找了半天没答案,终于在英文世界搜到了。。。少个typename
template<typename ITEM, int SIZE>
inline typename Array<ITEM, SIZE>::Item Array<ITEM, SIZE>::Get(int index)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP