为什么对std :: vector索引的赋值失败?

问题描述 投票:-1回答:1

我有一个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知道自己的外观,这意味着它包含动态创建的QPixmapBoardPiece有一个复制构造函数,所以这不应该成为问题。

我有一个ObjectManager类,它具有成员变量std :: vector <:vector>>> gameMap_;就像在指向...

c++ qt c++14 stdvector assign
1个回答
0
投票

未将图块放入矩阵的原因实际上是,我没有返回对gameMap的引用,而是返回了所述容器的副本。

© www.soinside.com 2019 - 2024. All rights reserved.