Синтаксис Unique_Ptrs {} - PullRequest
       12

Синтаксис Unique_Ptrs {}

0 голосов
/ 29 апреля 2018

Я пишу Entity Component System, основанную на руководстве по созданию игры, которой я следую.

В настоящее время функция добавления сущности класса "Entity" к вектору "entity" имеет вид:

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, особенно с фигурными скобками.

Спасибо.

1 Ответ

0 голосов
/ 29 апреля 2018

Оператор создает экземпляр unique_ptr, используя конструктор с одним аргументом. В этом случае он эквивалентен старому стилю std::unique_ptr<Entity> uPtr(e). Это отражает новый унифицированный синтаксис скобочной инициализации, доступный после C ++ 11.

Подробнее: https://google.github.io/styleguide/cppguide.html#Braced_Initializer_List

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...