2016-02-25 19 views
1

我有一个Basic类,它非常通用。 (如下所示)我试图将指针存储在unique_ptr<Basic>在载体中来存储,vector<unique_ptr<Basic>>无法将unique_ptr <Basic>设置为p(new Basic())

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

还有另一个[主持人]类包含此矢量,和房屋此成员:

void BasicManagement::CreateBasicEntry(){ 
    unique_ptr<Basic> e_Basic = p(new Basic()); 
    LocalBasicQueue.push_back(e_Basic); 
} 

其中LocalBasicQueuevector<unique_ptr<Basic>>。也许我的初始化是错误的,但我得到intellisense错误,我似乎无法分配一个指向一个新的类实例存储在向量中的指针。

(编译错误 “P”)11 IntelliSense: call of an object of a class type without appropriate operator() or conversion functions to pointer-to-function type c:\Us...agement.cpp 15 32 TestManagement

+0

Typo:'Base' vs'Basic'? –

+0

对不起 - 刚修好了。 :P –

回答

3

unique_ptr的构造是明确的。您应该构建e_Base这样的:

unique_ptr<Basic> e_base{new Basic}; 

另外请注意,你不能只是一个push_backunique_ptr,因为它是不可拷贝。你需要std::move()它。

+0

谢谢!此选项工作!新语法是否为'LocalBasicQueue.push_back(std :: move(e_base);'? –

+0

是的,这会起作用 –

+0

另外,要知道经验丰富的编码者跳过所有的错字,冲浪的背景。我希望我的编译器能做到这一点。 –

0

不要编写new Basic(),而应使用new Basic

相关问题