簡體   English   中英

帶有指針的C ++向量push_back

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM