Unique_Ptrs 语法 {}
Unique_Ptrs Syntax {}
我正在根据制作我正在关注的游戏的教程编写实体组件系统。
目前,将 class "Entity" 的实体添加到 "entities" 向量的函数如下:
Entity& addEntity() {
Entity* e = new Entity();
std::unique_ptr<Entity> uPtr{ e };
entities.emplace_back(std::move(uPtr));
return *e;
}
代码按照教程正常运行。但是,我不确定行中 Unique_ptr 的实际语法:
std::unique_ptr<Entity> uPtr{ e };
{} 大括号内实际发生了什么?据我了解,我正在将我的 uPtr 唯一指针分配给指针 e 的值?我真的很感激有关 unique_ptr 语法的解释,尤其是花括号。
谢谢。
该语句使用单参数构造函数创建 unique_ptr 的实例。在这种情况下,它相当于旧样式 std::unique_ptr<Entity> uPtr(e)
。这反映了自 C++11 以来可用的新统一大括号初始化语法。
更多详情:https://google.github.io/styleguide/cppguide.html#Braced_Initializer_List
我正在根据制作我正在关注的游戏的教程编写实体组件系统。
目前,将 class "Entity" 的实体添加到 "entities" 向量的函数如下:
Entity& addEntity() {
Entity* e = new Entity();
std::unique_ptr<Entity> uPtr{ e };
entities.emplace_back(std::move(uPtr));
return *e;
}
代码按照教程正常运行。但是,我不确定行中 Unique_ptr 的实际语法:
std::unique_ptr<Entity> uPtr{ e };
{} 大括号内实际发生了什么?据我了解,我正在将我的 uPtr 唯一指针分配给指针 e 的值?我真的很感激有关 unique_ptr 语法的解释,尤其是花括号。
谢谢。
该语句使用单参数构造函数创建 unique_ptr 的实例。在这种情况下,它相当于旧样式 std::unique_ptr<Entity> uPtr(e)
。这反映了自 C++11 以来可用的新统一大括号初始化语法。
更多详情:https://google.github.io/styleguide/cppguide.html#Braced_Initializer_List