在for循环中递增struct值每次都返回相同的值

gen*_*nfy 0 c++ struct for-loop

我只想尝试运行这个简单的代码行:

for (Client c : clients) {
    c.timeSinceLastPacket++;
    std::cout << c.timeSinceLastPacket << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这总是在增量后返回1.如果我在增量之前放置一个打印,它返回0.

这是我的结构:

struct Client {
    int timeSinceLastPacket = 0;
    sf::IpAddress ip;
    unsigned short port = 0;
    unsigned short id = 0;
};
Run Code Online (Sandbox Code Playgroud)

我正在使用SFML.

这是我尝试过的:

  • 将++更改为+ = 1
  • 删除了数据包值定义为0的每个实例(这可以在我链接的代码中看到)
  • 将数据包的值更改为float
  • 我还应该提一下,我的初衷是使用sf :: Time,但这也不起作用
  • 如果我用客户端[0]替换c,它可以正常工作

代码不是太长,但我不想把它放在问题中.我会在这里链接到你:

Server.h

Server.cpp

Lig*_*ica 10

for (Client c : clients) {
Run Code Online (Sandbox Code Playgroud)

在这里你制作一份名为的副本c.您的原件clients不受影响.

如果要改变原始元素,请使用引用:

for (Client& c : clients) {
Run Code Online (Sandbox Code Playgroud)