这是我第一次在此处发布文章,但是一段时间以来我一直在使用答案和帮助。

我已经计划了好几年,现在正在开发一个简单的纸牌游戏。最终这将是我上学的高级项目(不要求任何人为我做功课!)

尝试通过几个类将列表的内容添加到控制台时,我现在遇到问题。

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/

10-14 03:20