理解問題:未修改的指標傳遞
在此程式碼片段中,clickOnBubble 函數接收指向Bubble 物件(targetBubble) 的指標,並氣泡指針(氣泡)向量。問題是,函數執行後,傳遞給函數的 targetBubble 指標保持不變。我們期望該函數應將 targetBubble 指標更改為指向 bubbles 向量中的特定 Bubble,但這並未發生。
傳遞指標的副本
出現此行為的原因是您傳遞的是 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 }
中這兩種情況,函數內修改後的targetBubble指標都會反映在外面原來的targetBubble指標中函數。
以上是為什麼我的指標在傳遞給函數後沒有改變?的詳細內容。更多資訊請關注PHP中文網其他相關文章!