我有一个非常通用的Basic类。 (如下所示)我正在尝试将指针存储在unique_ptr<Basic>中以存储在 vector vector<unique_ptr<Basic>>

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

还有另一个[host]类,包含该 vector ,并容纳该成员:
void BasicManagement::CreateBasicEntry(){
    unique_ptr<Basic> e_Basic = p( new Basic() );
    LocalBasicQueue.push_back(e_Basic);
}

其中LocalBasicQueuevector<unique_ptr<Basic>>。也许我的初始化是错误的,但是我遇到了智能错误,而且似乎无法为新类实例分配一个指针以存储在 vector 中。

(“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

最佳答案

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

unique_ptr<Basic> e_base{new Basic};

另外,请注意,您不能仅将push_back编码为unique_ptr,因为它不可复制。您需要std::move()它。

关于c++ - 无法将unique_ptr <Basic>设置为p(new Basic()),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35633211/

10-10 21:21