首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

stl源码剖析 page86 页的疑问,该如何处理

2012-04-01 
stl源码剖析 page86 页的疑问C/C++ code第三章 83页,作者提供了一个ListIter,然后作者在page84页提到 第一

stl源码剖析 page86 页的疑问

C/C++ code
第三章 83页,作者提供了一个ListIter,然后作者在page84页提到 第一个版本的迭代器暴露了 ListItem的成员函数next(),之后,作者在86页提供了第二个版本的迭代器(注:不能用于原生指针的版本)tempalte<class T>struct MyIter{typedef T value_type; //内嵌T* ptr;MyIter(T* p=0):ptr(p){}T& operator*() const {...}........};此时 用这个迭代器去操作List(作者自己写的一个简单List, List中的节点类叫ListItem),感觉就是第二个版本 依然无法隐藏成员函数next()。 无法理解,为什么可以隐藏next()??如果隐藏了,MyItem怎么操作ListItem啊???


第二个版本和第一个版本依然没有改变暴露的问题啊, (抛开原生指针)


[解决办法]
楼主看看iterator模式
[解决办法]
取到T*,那是没法隐藏啊
这里指不能直接用MyIter->next调用
[解决办法]
ListItem* it;
如果能访问it,那么通过这个指针访问ListItem类里的成员取决于ListItem类的定义。
指针it的私有性并不延伸到类里的内容。

另外关于具体的实现就请继续看下面的list的实现。

热点排行