无法将 unique_ptr<Basic> 设置为 p(new Basic())
Unable to set unique_ptr<Basic> to p(new Basic())
我有一个非常通用的 Basic
class。 (如下所示)我试图将指针存储在 unique_ptr<Basic>
中以存储在向量中,vector<unique_ptr<Basic>>
class Basic:
public BaseClass
{
public:
Basic();
~Basic();
};
还有另一个 [host] class 包含此向量,并容纳此成员:
void BasicManagement::CreateBasicEntry(){
unique_ptr<Basic> e_Basic = p( new Basic() );
LocalBasicQueue.push_back(e_Basic);
}
其中 LocalBasicQueue
是 vector<unique_ptr<Basic>>
。也许我的初始化是错误的,但我收到了智能感知错误,而且我似乎无法分配一个指向新 class 实例的指针来存储在向量中。
("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()
它。
不要写new Basic()
,改用new Basic
。
我有一个非常通用的 Basic
class。 (如下所示)我试图将指针存储在 unique_ptr<Basic>
中以存储在向量中,vector<unique_ptr<Basic>>
class Basic:
public BaseClass
{
public:
Basic();
~Basic();
};
还有另一个 [host] class 包含此向量,并容纳此成员:
void BasicManagement::CreateBasicEntry(){
unique_ptr<Basic> e_Basic = p( new Basic() );
LocalBasicQueue.push_back(e_Basic);
}
其中 LocalBasicQueue
是 vector<unique_ptr<Basic>>
。也许我的初始化是错误的,但我收到了智能感知错误,而且我似乎无法分配一个指向新 class 实例的指针来存储在向量中。
("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()
它。
不要写new Basic()
,改用new Basic
。