一个简单的动态数组,Iterator怎么不能用啊

mervynhit 2011-08-28 06:00:54
看这段代码

template <class T>
class MArray
{
private:
T* ArrayData;
int AllocatedSize;
int NumOfItems;
public:
typedef T* iterator;
...
iterator begin();
}


template <class T>
MArray<T>::iterator MArray<T>::begin()
{
return ArrayData;
};




在使用这个Iterator的时候,会出现这样的错误。
“MArray<T>::iterator”: 依赖名称不是类型
在网上查了一下把
typedef T* iterator; 改成typedef typename T* iterator; 也不行,相同的错误

改成这样就不会出现问题,这是为什么?

template <class T>
class MArray
{
private:
T* ArrayData;
int AllocatedSize;
int NumOfItems;
public:
typedef T* iterator;
...
iterator begin()
{
return ArrayData;
}
}

...全文
88 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
热爱生活 2011-08-28
  • 打赏
  • 举报
回复
jackyjkchen
好帅啊!学习了`!
热爱生活 2011-08-28
  • 打赏
  • 举报
回复
楼上的意思是:MArray<T>::iterator MArray<T>::begin()
改成:
typename MArray<T>::iterator MArray<T>::begin()
代码他已经修改过了。
mervynhit 2011-08-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jackyjkchen 的回复:]

引用 3 楼 mervynhit 的回复:

[Quote=引用 1 楼 jackyjkchen 的回复:]

typename位置不对
这样也行
typedef T* iterator;不是成员变量,是个typedef,用::找不到

那应该怎么改啊?

代码都给你了,晕
[/Quote]


晕,没看到Typename? 我以为你直接把我的代码复制过来了,马上给分,不过想问一下为什么函数实现前面加上typename,作用域就一样了啊。
羽飞 2011-08-28
  • 打赏
  • 举报
回复
1楼受教
我想问问什么时候才用::这个
成员?
jackyjkchen 2011-08-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mervynhit 的回复:]

[Quote=引用 1 楼 jackyjkchen 的回复:]

typename位置不对
这样也行
typedef T* iterator;不是成员变量,是个typedef,用::找不到

那应该怎么改啊?
[/Quote]
代码都给你了,晕
mervynhit 2011-08-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jackyjkchen 的回复:]

typename位置不对
这样也行
typedef T* iterator;不是成员变量,是个typedef,用::找不到

那应该怎么改啊?
maoxing63570 2011-08-28
  • 打赏
  • 举报
回复
分离编译还是?
jackyjkchen 2011-08-28
  • 打赏
  • 举报
回复
typename位置不对
这样也行
typedef T* iterator;不是成员变量,是个typedef,用::找不到

你写到里面,作用于一样了就行了

template <class T>
class MArray
{
private:
T* ArrayData;
int AllocatedSize;
int NumOfItems;
public:
typedef T* iterator;
iterator begin();
};


template <class T>
typename MArray<T>::iterator MArray<T>::begin()
{
return ArrayData;
};

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧