Quantcast
Channel: beginners - openFrameworks
Viewing all articles
Browse latest Browse all 4929

Create pointer to object on the heap

$
0
0

@MaximilianUAL2020 wrote:

Hi everyone,

I am struggling to create a pointer to an object on the heap and access its methods outside of the function in which I declared it. In App.h, I created an instance of the class “Ball”, whose methods I can access perfectly fine in setup(), update(), and draw().

App.h

#pragma once

#include "ofMain.h"
#include "Ball.hpp"

class ofApp : public ofBaseApp{

	public:
		void setup();
		void update();
		void draw();
		void mousePressed(int x, int y, int button);
    
        Ball myBall;
    
};

App.cpp

#include "ofApp.h"

//--------------------------------------------------------------
void ofApp::setup(){
    
    ofBackground(ofColor::white);
    
    myBall.setup();
    
}

//--------------------------------------------------------------
void ofApp::update(){

    myBall.update();
    myBall.jiggle();
    
}

//--------------------------------------------------------------
void ofApp::draw(){
    
    myBall.draw();
    
}

In mousePressed(), I am trying to create a pointer to the object “Ball” on the heap, which seems to work fine:

//--------------------------------------------------------------
void ofApp::mousePressed(int x, int y, int button){

    Ball * secondBall = new Ball();
}

However, when I try to call the methods of “secondBall” outside of mousePressed(), I get an error message (Member Reference Type).

App.cpp

#include "ofApp.h"

//--------------------------------------------------------------
void ofApp::setup(){
    
    ofBackground(ofColor::white);
    
    myBall.setup();
    
    secondBall->setup();
    
}

//--------------------------------------------------------------
void ofApp::update(){

    myBall.update();
    myBall.jiggle();
    
    secondBall->update();
    secondBall->jiggle();
    
}

//--------------------------------------------------------------
void ofApp::draw(){
    
    myBall.draw();
    
    secondBall->draw();

}

//--------------------------------------------------------------
void ofApp::mousePressed(int x, int y, int button){

    Ball * secondBall = new Ball();
}

I am not sure why I get this error, as I have learned that the “new” keyword would make a variable globally accessible. If anyone can help me out with this, I would appreciate it!

Thank you!

Posts: 1

Participants: 1

Read full topic


Viewing all articles
Browse latest Browse all 4929

Trending Articles