openframeworksのclassで、アドレスを使うことのメリット
こんにちは
openframeworkの勉強をしていて気になったので質問です。
yoppaさんのサンプルを見ているのですが、バネとパーティクルという自作クラスの読み込み方が見慣れないものだったのです。
構図としては、まずparticleというクラスがあって、それをincludeして使っているspringクラスがあり、testApp内で出力というものなのですが、springクラス内ではparticleそのものではなくて、そのアドレスをメンバにし、その後testAppでparticleをわざわざincludeして、springのメンバのparticleアドレスに代入しています。
個人的にみれば、普通にspringクラス内でparticleを宣言して、そのままparticleを格納すればいいように思えるのですが........。この方が処理が早くなる、もしくは何らかのメリットがあるのでしょうか?
説明がわかりにくくて申し訳ないですが、よろしくお願いいたします。(一応下に問題の箇所のコードを記述しておきました)
サンプルのあるページ
class particle
{
public:
ofVec2f pos;
ofVec2f vel;
ofVec2f frc;
particle();
virtual ~particle(){};
void resetForce();
void addForce(float x, float y);
void addDampingForce();
void setInitialCondition(float px, float py, float vx, float vy);
void update();
void draw();
void bounceOffWalls();
bool bFixed;
float damping;
protected:
private:
};
class spring {
public:
spring();
//ここで何故かアドレスを格納している
particle * particleA;
particle * particleB;
float distance;
float springiness; // this is the k, springiness constant
void update();
void draw();
};
class testApp : public ofSimpleApp{
public:
void setup();
void update();
void draw();
void keyPressed (int key);
void keyReleased (int key);
void mouseMoved(int x, int y );
void mouseDragged(int x, int y, int button);
void mousePressed(int x, int y, int button);
void mouseReleased();
spring mySpring;
particle particle_a, particle_b;
};
void testApp::setup(){
//ここでアドレスに代入
mySpring.particleA = &particle_a;
mySpring.particleB = &particle_b;
}