我正在根据制作我正在关注的游戏的教程编写一个实体组件系统。
目前,将“实体”类的实体添加到“实体”向量的功能如下:
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 };
{}括号内实际发生了什么?据我了解,我正在将指向e的指针指定给我的uPtr唯一指针?我真的很感激有关unique_ptr语法的解释,特别是花括号。
感谢。
答案 0 :(得分:0)
该语句使用单参数构造函数创建unique_ptr的实例。在这种情况下,它等同于旧样式std::unique_ptr<Entity> uPtr(e)
。这反映了自C ++ 11以来可用的新的统一支撑初始化语法。
更多详情:https://google.github.io/styleguide/cppguide.html#Braced_Initializer_List