2017-08-19 9 views
0

ゲームのループでクラスのオブジェクトを作成する適切な方法は一度ですか?たとえば、私はBox、Sphere、Cyllinderクラスを持っており、プログラムの実行中に別の時間にいくつかのオブジェクトを作成して、将来それらを使用したいと思っています。どのようにこのオブジェクトを保存する適切な方法はありますか? 1つのクラスですべてのクラスをベクトルとして結合しますか?ゲームのループでクラスオブジェクトを作成する

vector<glm::vec3> initVerts = {/*verts position*/}; 

class Box 
{ 
    vector<glm::vec3> verts; 
    Box(): verts(initVerts)  
    void moveBox(glm::vec3 newPos){ /*translate verts*/ } 
}; 

while (!windowShouldClose()) 
{ 
    Box box; 
    box.moveBox(1.0,0.0,0.0); // on the second pass it was another box with initial position 
} 
+0

は、あなたがのインスタンスを作成する方法を求めていますクラス(オブジェクト)、または作成後のクラスの保存方法あなたがしようとしていることについて、いくつかのコード(あるいは擬似コード)を提供することが役に立つと思っています。 – xaxxon

+0

xaxxon作成したら保存する方法を尋ねます。私はコードを提供しようとします。 – OpenglNoob

+1

オブジェクトをベクトルに格納します。ベクトルが範囲外になると、オブジェクトは削除されます。代わりにポインタを格納する場合は、ポインタを自分で削除する必要があります。 – Ripi2

答えて

1

最も簡単な方法は、クラスタイプごとに1つのベクトルを作成することです。

std::vector<Box> boxes; 
boxes.reserve(100); // however many you expect to need 
Box& box1 = boxes.emplace_back(); 

while (!windowShouldClose()) 
{ 
    box1.moveBox(1.0,0.0,0.0); 
} 

をそれとも、すべてのオブジェクトを反復処理する方法を必要としない場合、あなただけのループの外それらを個別に保存することができます:起動するには

Box box1; 

while (!windowShouldClose()) 
{ 
    box1.moveBox(1.0,0.0,0.0); 
} 
+0

あなたの最初の解決に感謝します。 – OpenglNoob

関連する問題