[英]c++ vector push_back with pointers
我正在努力解決以下問題。 我有以下函數,該函數接受對對象的const引用。 我想要做的是提供存儲,指向對象組件的指針正在引用。 但是,當我調用storage.push_back()進行更改時,對象組件正在引用(其成員數據已損壞)
我只是想存儲一個指向相同對象組件的指針,而不是完全更改對象。
void InputSystem::RegisterInputAcceptingEntity(const PlayerInputComponent &component) {
auto *cpy = &component;
std::vector<const PlayerInputComponent*> storage;
storage.push_back(cpy);
}
上面的代碼為什么會完全更改對象組件正在引用的代碼?
編輯:好的,我編輯了向量以包含常量指針。
以下是一些截圖,顯示了正在發生的事情。 在被調用方的此處,如果我們檢查將通過引用傳遞的參數,則可以看到input_component成員未損壞。 圖片網址: http : //i.imgur.com/lKpRm.png
但是,在第二個圖像中,剛進入上述方法之后:
圖片網址: http : //i.imgur.com/x0Vdn.png
我一直認為,通過const引用傳遞時,對象內部/外部的函數應該沒有任何區別。 我不明白為什么如果通過const引用傳遞該對象,則根本不會對其進行更改。
首先,通過valgrind運行您的代碼,看看實際發生損壞的地方。 將指針推到數組上應該不會對指向的數據產生任何影響。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.