我想实现一个从对象数组中选择随机对象并将其返回给我的函数。它应该是这样的(在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