【问题标题】:Using class function on objects stored in List, accessed through iterator对存储在 List 中的对象使用类函数,通过迭代器访问
【发布时间】:2012-01-12 21:24:55
【问题描述】:

我正在尝试打印Player 的某些实例的名称,这些实例存储在List<Player> 播放器中。我应该用什么代替“扑通”!让这个工作?

   list<Player>::iterator it;
   for(it=players.begin(); it != players.end(); ++it) cout << "Plop!" << " ";
   cout << endl;

我试过了

*it.getName();
*it->getName();

我觉得迭代器的处理方式应该与普通指针不同。或者迭代器 *it 根本不包含 Player 对象?

【问题讨论】:

  • 作为替代解决方案,请考虑为 Player 类实现 operator&lt;&lt;。作为重载或友元函数。

标签: c++ class function iterator


【解决方案1】:

应该是的;

(*it).getName()

.运算符比 * 更难绑定,否则会导致编译失败。

【讨论】:

    【解决方案2】:
    it->getName();
    

    只要Player有这个方法...

    【讨论】:

      【解决方案3】:

      你需要取消对迭代器的引用,就像你正在做的那样

      *it
      

      但是如果你知道我的意思的话,取消引用会下降到左边:) 所以你需要用一些括号将它保持在适当的位置:

      (*it).getName();
      

      别忘了 for 循环中的花括号!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-22
        • 1970-01-01
        • 2020-01-14
        • 2020-07-12
        相关资源
        最近更新 更多