小编dar*_*man的帖子

从函数返回unique_ptr的向量

我目前正在阅读Head First Object Oriented Analysis and Design这本书,同时也习惯了C++ 11的一些特性(特别是unique_ptr和移动语义).在书中,他们以策略棋盘游戏的设计为例.它有一块板,瓷砖和瓷砖单位.代码是用Java编写的,我试图用C++重写它.在Java中,tile类如下:

public class Tile
{
    private List units;

    public Tile()
    {
        units = new LinkedList();
    }

    protected void addUnit(Unit unit)
    {
        units.add(unit);
    }

    protected List getUnits()
    {
        return units;
    }
}
Run Code Online (Sandbox Code Playgroud)

我首先使用shared_ptr在c ++中做了同样的事情.与使用原始指针的第二个版本相比,它工作但非常慢.然后我尝试了unique_ptr:

class Tile
{

public:
  Tile();
  virtual ~Tile();

  void addUnit()
  {
    mUnits.push_back(std::unique_ptr<Unit>(new Unit());
  }

  std::vector<std::unique_ptr<Unit>> getUnits()
  {
    return mUnits;
  }

private:
  std::vector<std::unique_ptr<Unit>> mUnits;

};
Run Code Online (Sandbox Code Playgroud)

编译器不喜欢getUnits.据我所知,它来自于unique_ptr中禁用了复制构造函数的事实.你会如何返回向量列表?谢谢!

c++ vector unique-ptr c++11

18
推荐指数
1
解决办法
8612
查看次数

标签 统计

c++ ×1

c++11 ×1

unique-ptr ×1

vector ×1