+ -
当前位置:首页 → 问答吧 → 容器元素自动转换

容器元素自动转换

时间:2011-12-12

来源:互联网

有一个容器,元素为指针,但是我想让迭代器返回引用,也就是说可以这样:
list<X*> l;
list<X*>::itertaor it;
for ( it = l.begin() ; it != l.end() ; it++)
  *it.DoSomeThing();
有什么办法吗?

作者: yusss   发布时间: 2011-12-12

迭代器前面加两个星号可以不?

作者: mm11214014   发布时间: 2011-12-12

重载 * 操作

作者: qscool1987   发布时间: 2011-12-12


看错了,(*it).DoSomeThing();
这样用是正确的,你想返回什么引用,描述的不给力..

作者: qscool1987   发布时间: 2011-12-12

楼主为什么不(*it)->DoSomeThing();这样调用

作者: shayla   发布时间: 2011-12-12

*it.DoSomeThing();


===
(*it)->DosomeThing();

作者: mingliang1212   发布时间: 2011-12-12

*it中*就是返回引用的啊

作者: Demon__Hunter   发布时间: 2011-12-12

引用 4 楼 shayla 的回复:

楼主为什么不(*it)->DoSomeThing();这样调用

这只是个示例,当然可以这样调用。但是如果我要把元素传递给类似下面这样的函数呢
void fun(X&)

作者: yusss   发布时间: 2011-12-12

引用 2 楼 qscool1987 的回复:

重载 * 操作

修改迭代器?这个工程量很大吧?

作者: yusss   发布时间: 2011-12-12

引用 8 楼 yusss 的回复:
引用 4 楼 shayla 的回复:

楼主为什么不(*it)->DoSomeThing();这样调用

这只是个示例,当然可以这样调用。但是如果我要把元素传递给类似下面这样的函数呢
void fun(X&amp;)


void fun(X&);

fun(**iter);

作者: mingliang1212   发布时间: 2011-12-12