我正在尝试为我在C ++中创建的类编写计数器。
我正在将一定的时间delT传递给Wake类的方法,该方法只是将其添加到类中变量已存储的值上。代码是:

void checkPlayerWakes(int deltaT){
    for(size_t i = 0; i < game.getPlayer().getWakes().size(); i++){
        Wake& w = game.getPlayer().getWakes().at(i);
        w.age(deltaT);
    }
}


但是,打算增加的计时器保持为0。
更改计时器的代码是:

void Wake::age(int millis) {
    cout << "Updating : " <<  currentLife;

    this->currentLife += millis;

    setAlpha(((double)currentLife)/((double)lifeTime));

    cout << " " << currentLife << endl;
}

E.g.
first current life: 0
second current life: 16


我知道如果我要使用

Wake w = something
w.age(deltaT)


它不起作用,因为“ w”只是对象的副本。但是,这显然不是我的问题吗?而且game.getPlayer()也返回一个引用,即PLAYERSHIP&。

上一次我遇到类似的问题时,通过调用和返回引用(而不仅仅是ClassName)解决了该问题。我还在做错什么吗?

最佳答案

getWakes()还需要返回引用,并且应返回vector&而不是vector。
我在此处添加此内容以确保此问题被标记为已回答。

09-25 20:15