我想實現一個從對象數組中選擇隨機對象並將其返回給我的函數。它應該是這樣的(在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背景),所以大部分指針/引用/內存管理對我來說都是新的。
謝謝!
如果用sizeof(objectList)/ sizeof(object)''更改sizeof(objectList)'會發生什麼? – rendon
我仍然遇到分段錯誤,標準輸出報告sizeof(objectList)/ sizeof(object)是1(而不是3)。 也就是說,如果沒有sizeof(object)它將sizeof(objectList)設爲8,我假設它與指針的大小有關? –
那麼,除非你有特殊的需求(對象列表有什麼其他操作),對象和列表我建議使用一個向量。 – rendon