这是我第一次在此处发布文章,但是一段时间以来我一直在使用答案和帮助。
我已经计划了好几年,现在正在开发一个简单的纸牌游戏。最终这将是我上学的高级项目(不要求任何人为我做功课!)
尝试通过几个类将列表的内容添加到控制台时,我现在遇到问题。
for(std::list<Card>::iterator it = Hand.begin(); it != Hand.end(); it++)
std::cout<< *it.GetName();
我想弄清楚这条线
std::cout<< *it.GetName();
是有效的还是无效的。我正在下班进行故障排除,现在没有能力尝试任何事情。在今天早上我不得不放弃该项目之前,我遇到了一些编译错误,使我相信我需要重载<
我一天中大部分时间都在研究,但是没有遇到过任何让我跳脱的情况作为正确的解决方案,但是我发现的这个小障碍似乎是我所尝试的最正确的解决方案做。
该块是否会像现在一样打印“手”列表中存储的卡对象的名称?是的,卡类确实具有该GetName()函数,并且已正确声明。
最佳答案
*it.getName();
是相同的
*(it.getName());
因为
.
和函数调用的优先级高于一元*
。因此,编译器在类getName
中寻找成员std::list<Card>::iterator
,但没有一个成员:getName
是(我认为)Card
的成员,并且迭代器没有与之的任何继承或转发关系。他们的对象。你可能是说
(*it).getName();
或等效地,
it->getName();
(箭头
->
运算符只是解引用然后命名成员的捷径。)关于c++ - C++ std::list <T>::iterator迭代器是否可以访问<THE>成员函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20131994/