无法将unique_ptr <basic>设置为p(new Basic())

时间:2016-02-25 16:40:47

标签: c++ pointers vector unique-ptr

我有一个非常通用的irb(main):001:0> RUBY_VERSION => "1.8.7" irb(main):002:0> "foo".to_sym => :foo 类。 (如下所示)我试图将指针存储在Basic中以存储在向量unique_ptr<Basic>

vector<unique_ptr<Basic>>

还有另一个[host]类包含此向量,并包含此成员:

class Basic:
public BaseClass
{
public:
    Basic();
    ~Basic();
};

void BasicManagement::CreateBasicEntry(){ unique_ptr<Basic> e_Basic = p( new Basic() ); LocalBasicQueue.push_back(e_Basic); } LocalBasicQueue的位置。也许我的初始化是错误的,但是我得到了intellisense错误,我似乎无法指定一个指向新类实例的指针存储在向量中。

(“p”的编译器错误)vector<unique_ptr<Basic>>

2 个答案:

答案 0 :(得分:3)

unique_ptr的构造函数是显式的。你应该像这样构建e_Base

unique_ptr<Basic> e_base{new Basic};

另请注意,您不能只push_back unique_ptr,因为它不可复制。你需要std::move()它。

答案 1 :(得分:0)

不要写new Basic(),而是使用new Basic