我在OpenFrameworks图片中遇到此错误。但似乎是一个简单的C ++问题。
ofVec2f does not refer to a value
当然我的指针有问题,但我不明白为什么。 我试图改变& - > *
canvas4.cpp
void Canvas4::createStuff() {
ballCollection.clear();
for (int i=0; i<num; i++) {
ofVec2f org;
org.set(ofRandom(edge, ofGetWidth()-edge), ofRandom(edge, ofGetHeight()-edge));
float radius = ofRandom(50, 150);
ofVec2f loc;
loc.set(org.x+radius, org.y);
float offSet = ofRandom(TWO_PI);
int dir = 1;
float r = ofRandom(1);
if (r>.5) dir =-1;
myBall = new Ball(org, loc, radius, dir, offSet);
ballCollection.push_back(* myBall);
}
//
这是Ball类的构造函数;
Ball::Ball(ofVec2f &_org, ofVec2f &_loc, float _radius, int _dir, float _offSet) {
// **** error occur right here.
// use of undeclared "_org"
org = _org;
loc = _loc;
radius = _radius;
dir = _dir;
offSet = _offSet;
}
Header Canvas4.h
class Ball {
public:
ofVec2f org;
ofVec2f loc;
float sz = 10;
float theta, radius, offSet;
int s, dir, d = 60;
Ball(ofVec2f &_org, ofVec2f &_loc, float _radius, int _dir, float _offSet);
};
class Canvas4{
public:
int fc = 100;
int num = 100;
int edge = 200;
vector<Ball> ballCollection;
Boolean save = false;
ofFbo fbo;
Ball *myBall;
Canvas4();
};
答案 0 :(得分:5)
如果使用点(.
)运算符而不是范围(::
)运算符调用静态方法,也会导致此错误。
答案 1 :(得分:4)
所有问题都是单个&#34;}&#34;不要关闭方法Canvas :: createStuff()
对此问题感到抱歉。
我应该删除帖子吗?
答案 2 :(得分:0)
如果没有全面了解它,还有更多内容,但是如果它们的类型也未声明,那么C ++编译器会将变量名称作为未声明的级联,尽管你可能会在那里看到假设无类型变量是一个int,导致各种各样的愚蠢。
除此之外,检查你所拥有的是否包含了ofVec2,并查看它所在的命名空间。就像,如果ofVec2f在某个命名空间中,你需要使用namespacename;或者,更优选地,使用其名称空间前缀来引用ofVec2f。