내 프로그램의 다음 코드에서 funcA와 funcB의 출력이 다르기 때문에 포인터의 값이 어딘가에서 변경되었습니다. 이 오류가 마술처럼 디버거 (QT Creator 's debugger)에 나타나지 않아서 face
의 주소가 변경되었다는 것을 확신 할 수 없었습니다. 그러나 여기에 코드입니다 : 내 마우스 클릭은 위의 두 가지 기능의 출력 (격렬하게 변화 위치에 따라 출력 변화가 funcB에 예 (30)에 대한 것입니다 비록C++에서 반환 된 포인터가 함수에서 반환 된 포인터가 아닌 다른 포인터를 가리키고 있습니다.
void funcA() {
Face *face = funcB();
if (face != NULL) {
cout << "in funcA " << face->vertices[0] << endl;
}
}
Face * funcB() {
vector<Face> faces;
//populate faces
...
Face *face = &(faces[index]);
cout << "in funcB " << face->vertices[0] << endl;
return face;
}
및 funcA 년에는 18,117,600 될 것입니다. .. 나는 단지 60 명의 얼굴을 가지고있다!) 또한 그것은 항상 무작위로 나타나기 위해 보인다.
모든 도움을 주시면 대단히 감사하겠습니다.
문제를 해결하는 가장 좋은 방법에 대한 제안 사항이 있으십니까? – confusedKid
"문제를 해결하는 가장 좋은 방법"은 기본적으로이 기능에서 수행하는 모든 작업에 따라 다릅니다. 무엇을 성취하려고합니까? 왜 '얼굴'이 당신의 기능에서 지역적입니까? 왜 포인터를 반환하는 것이 옳은 일이라고 생각 했습니까? –
faces는 광선에 의해 교차 된 지형의 모든 얼굴을 추적하는 임시 벡터로 가정되어 있으므로 나중에 어느 카메라의 얼굴이 가장 가까운 지 알 수 있습니다. 내 지형에서 faceList의 얼굴에 포인터를 반환하고 싶었 기 때문에 다른 함수에서 얼굴의 색상을 변경할 수 있습니다. – confusedKid