0

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

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

当我尝试通过几个类将列表的内容输出到控制台时,我现在遇到了一个问题。

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

我想弄清楚这条线是否

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

是否有效。我正在解决工作中的问题,我现在没有能力尝试任何事情。在我今天早上不得不放弃这个项目之前,我遇到了一些编译错误,这让我相信我需要重载 << 操作符,我尝试过,但由于某种原因最终得到了几个链接错误。

我一天中的大部分时间都在研究,但没有遇到任何让我跳出来作为正确解决方案的情况,但这个小块是我发现的,对于我正在尝试的东西来说似乎是最正确的做。

该块是否会像现在一样打印存储在手牌列表中的卡片对象的名称?是的,Card Class 确实具有 GetName() 函数,并且声明正确。

4

1 回答 1

3
*it.getName();

是相同的

*(it.getName());

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

你可能是说

(*it).getName();

或等效地,

it->getName();

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

于 2013-11-21T23:28:02.230 回答