传递实例变量byref的C ++不会更新

时间:2013-11-12 02:55:59

标签: c++ openframeworks

我通常会编写C#和Objective C,但是我在openframeworks中用C ++写一些东西并尝试使用Tweenzor为它设置动画,如果我在我的类中放置一个变量,它就可以正常工作,例如 ħ

float mainX;

CPP

mainX = 100;
Tweenzor::add(&mainX, (float)mainX, (radius * 2), 0.0f, 2.5f);

但如果我创建一个名为menuCircle的类,它表示它完成但没有任何变化,我感觉它正在增加一些但不是类中的实例变量任何想法如何通过引用调用它?我尝试了15种不同的方式: ħ

class menuCircle
{
    public:
        float x;
        float y;
        float r;
        ofColor c;
        void init(float xCoord, float yCoord, float radius);
        void move(float x, float y);
        void animate(float xCoord, float yCoord, float radius);
        void didFinish(float *e);
};

CPP

void menuCircle::animate(float xCoord, float yCoord, float radius){
    Tweenzor::add(&x, x, xCoord, 0.0f, 2.5f);
    Tweenzor::addCompleteListener( Tweenzor::getTween(&x), this, &menuCircle::didFinish);
    ofLog(OF_LOG_NOTICE, "tweening");

}
void menuCircle::didFinish(float *e){
    ofLog(OF_LOG_NOTICE, "tweening finished");
}

1 个答案:

答案 0 :(得分:0)

你已经从你的问题中遗漏了所有相关的代码片段,所以这里通常是你通过引用传递的东西:

void foo(int& bar) {
    bar = 3;
}

int x = 0;
foo(x);
// x == 3

通常的错误是将&放在错误的地方。我怀疑你是在address-of意义上使用它,但在您展示add原型是什么以及如何调用它之前,这一切都是猜测。