"Type" does not refer to a value on C++

cleliodpaula picture cleliodpaula · Sep 5, 2014 · Viewed 13.7k times · Source

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();


};

Answer

saurabheights picture saurabheights · Sep 13, 2016

This error is also caused if you call a static method using dot(.) operator instead of scope(::) operator.