문제 이해: 수정되지 않은 포인터 전달
이 코드 조각에서 clickOnBubble 함수는 Bubble 객체(targetBubble)에 대한 포인터를 수신하고 버블 포인터(버블)의 벡터입니다. 문제는 함수가 실행된 후 함수에 전달된 targetBubble 포인터가 수정되지 않은 상태로 유지된다는 것입니다. 함수가 거품 벡터의 특정 거품을 가리키도록 targetBubble 포인터를 변경해야 한다고 예상하지만, 이는 일어나지 않습니다.
포인터 복사본 전달
이 동작의 이유는 참조가 아닌 targetBubble 포인터의 복사본을 전달하기 때문입니다. 포인터 복사본을 전달할 때 함수 내 포인터에 대한 변경 사항은 함수 외부의 원래 포인터에 반영되지 않습니다.
해결책: 포인터 참조 또는 포인터 대 포인터 사용
함수 외부의 targetBubble 포인터가 변경되었는지 확인하려면 포인터에 대한 참조를 전달하거나 포인터를 사용하여 포인터를 사용해야 합니다. 포인터.
포인터 참조 사용:
void clickOnBubble(sf::Vector2i &mousePos, std::vector<Bubble *>& bubbles, Bubble *&targetBubble) { targetBubble = bubbles[i]; // Modified pointer here is reflected outside function }
포인터 대 포인터 사용:
void clickOnBubble(sf::Vector2i &mousePos, std::vector<Bubble *>& bubbles, Bubble **targetBubble) { *targetBubble = bubbles[i]; // Modified pointer here is reflected outside function }
In 두 경우 모두, 함수 내의 수정된 targetBubble 포인터는 외부의 원래 targetBubble 포인터에 반영됩니다. 기능입니다.
위 내용은 포인터를 함수에 전달한 후에도 포인터가 변경되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!