C ++ std :: list <t> :: iterator迭代器是否可以访问<t>成员函数?</t> </t>

时间:2013-11-21 21:13:46

标签: c++ iterator stdlist

这是我第一次在SO上发帖,但我已经在这里使用了答案并提供了一段时间的帮助。

我正在制作一个简单的纸牌游戏,因为我已经计划好几年了。最终它将成为我的学校高级项目(不要求任何人为我做作业!)

我正在尝试通过几个类将一个列表的内容提供给控制台时遇到问题。

for(std::list<Card>::iterator it = Hand.begin(); it != Hand.end(); it++)
    std::cout<< *it.GetName();

我正在试图找出该行

std::cout<< *it.GetName();

是否有效。我正在从工作中排除故障,我现在没有能力尝试任何事情。在我今天早上放弃项目之前,我遇到了一些编译错误,导致我认为我需要重载&lt;&lt;我试过的运算符,最后由于某种原因得到了一些链接错误。

我一直在研究大部分时间,但没有遇到任何突然出现在我身上的情况作为正确的解决方案,但这个小块是我发现的似乎对我来说最正确的我试图做。

该块是否会立即打印存储在Hand列表中的Card对象的名称?是的,Card Class确实具有GetName()函数并且它被正确声明。

1 个答案:

答案 0 :(得分:3)

*it.getName();

相同
*(it.getName());

因为.和函数调用的优先级高于一元*。因此,编译器在类getName中查找成员std::list<Card>::iterator,但没有一个:getName是(我假设)Card的成员,而迭代器不是t与其对象有任何继承或转发关系。

你可能意味着

(*it).getName();

或等效,

it->getName();

(箭头->运算符只是解除引用然后命名成员的捷径。)