gpt4 book ai didi

c++ - C++ STD::List:遍历列表的麻烦

转载 作者:行者123 更新时间:2023-12-02 10:12:45 82 4
gpt4 key购买 nike

运行我的代码时,它可以很好地编译,但是我不明白为什么它没有迭代并打印出我的列表。
我有一个子类Games和父类(super class):play_ballstatistics
目标是让玩家玩游戏,跟踪他们赢得比赛的尝试次数。在每个播放的结尾,它将跟踪每个播放的统计信息并将其推到stats列表的末尾。
我想我已经为它做好了一切,但是当我打印统计数据时,它甚至没有遍历列表的任何部分。
我在main.cpp中初始化我的列表,并将统计信息推送到play()类中play_ball函数的末尾。
在每局游戏结束时是否由于某种原因未填写列表?如果是这样,我该如何解决?
这是我的代码:
games.h:

class games {
friend class statistics;
friend class play_ball;
private:
std::string type;
int attempts = 0;
public:
games();
~games();
virtual void play(std::list<stats>) = 0;
};

static int plays = 0;
play_ball.cpp:
void stats::play(std::list<stats> sts)
{
// Plays the game...
sts.push_back(stats(get_plays(), "Ball ", count));
}
stats.cpp
void stats::play(std::list<stats> sts)
{
if (get_plays() == 0)
{
printf("ERROR: No game history.\n");
}
else
{
std::cout << "[Game Type Attempts:]\n";
// This should go through and print out: [game number] Ball (# of attempts)
// but when I run it, it just skips the loop and prints the "Thanks for playing!"
for (std::list<stats>::iterator p = sts.begin(); p != sts.end(); ++p)
{
std::cout << '[' << (*p).get_plays() << "] "<< (*p).get_type(sts) << " "<< (*p).get_atmpts(sts) << '\n';
}
std::cout << "Thanks for playing!";
}
}
main.cpp:
stats sts;
std::list<stats> l_sts;
play_ball ball;
ball.play(l_sts);
sts.play(l_sts);

最佳答案

参数“sts”是通过值而不是通过引用传递的。通过引用传递参数时,调用者和被调用者对该参数使用相同的变量。如果被调用方修改了参数变量,则效果对调用方的变量可见。当通过值传递参数时,调用方和被调用方有两个具有相同值的独立变量。如果被调用方修改了参数变量,则该效果对调用方不可见。

关于c++ - C++ STD::List:遍历列表的麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62960082/

82 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com