I'm getting this error at OpenFrameworks artwork. But appears to be a simple C++ issue.
ofVec2f does not refer to a value
Certainly I'm having problems with pointers, but I could't understand why. I tried to change & -> *
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);
}
//
This is the constructor of Ball class;
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();
};
myBall = new Ball(org, loc, radius, dir, offSet);
or inballCollection.push_back(* myBall);
? – ClamberCanvas4::createStuff()
is going to leak memory like a sieve in these lines:myBall = new Ball(org, loc, radius, dir, offSet); ballCollection.push_back(* myBall);
Change it toballCollection.push_back( Ball(org, loc, radius, dir, offSet) );
There's absolutely no reason to be dynamically allocating memory there. – Geromehello_
) is OK. It's a mistake I used to make a lot years ago, having looked at compiler-supplied header files and thinking they were a good example to imitate. If you want a naming convention for parameters, the most common seem to usepname
,p_name
,pName
etc. Prefixes usingm
for class members are common too. – Phosgene