【问题标题】:Unique_Ptrs Syntax {}Unique_Ptrs 语法 {}
【发布时间】:2018-04-29 11:10:12
【问题描述】:

我正在根据我正在关注的游戏制作教程编写实体组件系统。

目前,将“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 语法的解释,尤其是花括号。

谢谢。

【问题讨论】:

标签: c++ pointers syntax unique-ptr


【解决方案1】:

该语句使用单参数构造函数创建一个 unique_ptr 实例。在这种情况下,它相当于旧样式std::unique_ptr&lt;Entity&gt; uPtr(e)。这反映了自 C++11 以来可用的新统一大括号初始化语法。

更多详情:https://google.github.io/styleguide/cppguide.html#Braced_Initializer_List

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 2011-04-22
    • 2013-01-20
    • 2018-10-30
    • 1970-01-01
    • 2023-04-06
    • 2013-09-27
    相关资源
    最近更新 更多