개체 배열에서 임의의 개체를 선택하고 나에게 반환하는 함수를 구현하고 싶습니다. 그것은 (C++에서 대신 psuedocode의)과 같이해야한다 :개체 배열에서 임의의 개체 선택
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++에 비교적 익숙하다. (자바 배경에서 나온다.) 포인터/참조/메모리 관리는 일반적으로 나에게 새롭다.
감사합니다.
'sizeof (objectList)/sizeof (object)'를 사용하여 'sizeof (objectList)'를 변경하면 어떻게됩니까? – rendon
그래도 세그먼트 오류가 발생하고 표준 출력은 sizeof (objectList)/sizeof (object)가 1 (3 대신)임을보고합니다. sizeof (object)가 없으면 sizeof (objectList)를 8로 지정합니다.이 포인터는 포인터의 크기와 관련 있다고 가정합니다. –
글쎄, 특별한 요구 사항이 없다면 (객체 목록과 함께 할 다른 작업은 무엇입니까?) 객체와 목록을 사용하면 벡터를 사용하는 것이 좋습니다. – rendon