这是我第一次在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()函数并且它被正确声明。
答案 0 :(得分:3)
*it.getName();
与
相同*(it.getName());
因为.
和函数调用的优先级高于一元*
。因此,编译器在类getName
中查找成员std::list<Card>::iterator
,但没有一个:getName
是(我假设)Card
的成员,而迭代器不是t与其对象有任何继承或转发关系。
你可能意味着
(*it).getName();
或等效,
it->getName();
(箭头->
运算符只是解除引用然后命名成员的捷径。)