[英]Why would this assignment to a std::vector index fail?
我有一個class ObjectManager
,它具有一個成員變量
std::vector<std::vector<std::shared_ptr<BoardPiece>>> gameMap_;
如在指向BoardPiece
類實例的共享指針的矩陣中。 將此矩陣初始化為主要包含nullptr
。 現在,這些變量的名字建議,球員可能會在以后放置BoardPiece
上gameMap_
。
但是,當我嘗試對矩陣進行賦值時,如
GOManager_->getGameMap().at(unsigned(c.x())).at(unsigned(c.y()))
= GOManager_->getTileInPlay();
其中c
是游戲板上圖塊的坐標,則什么也沒有發生。 當我在QT Creator中查看調試器時,在應該進行分配的位置仍然有一個空指針。
在這種情況下可能導致分配失敗的原因是什么? BoardPiece
知道自己的外觀,這意味着它包含動態創建的QPixmap
。 不過, BoardPiece
具有復制構造函數,因此這不應該成為問題。
瓦片未放入矩陣的原因確實是這樣的事實,即我沒有返回對gameMap的引用,而是返回了所述容器的副本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.