オブジェクトの配列からランダムなオブジェクトを選択して返す関数を実装したいと思います。次のようなものにする必要があります (疑似コードではなく C++ で):
getRandomObject(objectList) {
return objectList[int(random(length of objectList))];
}
私の現在のコードは次のようになりますが、うまくいかないようです:
//definition of random selector
object getRandomObject(Object* objectList) {
return objectList[int(ofRandom(0, sizeof(objectList)))];
};
//create a pointer for the listOfObjects
object* listOfObjects;
//create an empty object to put the randomly selected object in
object randomObject;
//later in the code, populate the array:
object* listOfObjects[] = {
new Object(),
new Object(),
new Object()
};
//select random object
randomObject = getRandomObject(listOfObjects);
しかし、これはセグメンテーション違反を返すようです。私が気づいたいくつかの問題:
sizeof() は、配列のサイズではなく、getRandomObject のポインターのサイズを返します。配列のサイズを取得する良い方法はありますか? 配列に float* ポインターを使用しないことが含まれる場合があります。これはベクターの適切な使用例ですか?
問題の多くは、配列を作成する方法にあり、配列からランダムなオブジェクトを選択する方法にはあまりないと思います。私は C++ に比較的慣れていない (Java のバックグラウンドから来ている) ため、ポインター / 参照 / メモリ管理全般の多くは初めてです。
ありがとう!