unique_ptr:所以我不能再引用已删除的函数了

时间:2015-03-03 07:33:14

标签: c++

我有2个类,我想返回对私有成员对象的引用。

class BB{};

class B
{
   std::unique_ptr<BB> b;
public:
   const std::unique_ptr<BB>& getBB(){return b;} 
};
int main()
{
   B b;
   std::unique_ptr<BB> x=b.getBB();
}

毫无疑问,错误发生在x=b.GetBB()的主要部分 ...can't be referenced. It's a deleted function.

1 个答案:

答案 0 :(得分:3)

您正在尝试复制初始化unique_ptr,这是不允许的,因为unique_ptr已删除了复制构造函数。尝试

const std::unique_ptr<BB>& x = b.getBB();