Нужна помощь в понимании использования инициализатора C ++ 11 в примере Cisco DSLink - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь понять этот фрагмент кода.

    stream->set_result(cisco::efm_sdk::UniqueActionResultPtr{
      new cisco::efm_sdk::ActionValuesResult{cisco::efm_sdk::ActionValuesResult(cisco::efm_sdk::ActionError)
                                               .add_value(false)
                                               .add_value("Could not set value")}});

Найдено в:

https://github.com/CiscoDevNet/kinetic-efm-cpp-sdk/blob/master/efm-cpp-sdk-1.0.15-ie4k-dslink-dev/examples/simple_responder/main.cpp

Я понимаю, что один объект создается с использованием new cisco::efm_sdk::ActionValuesResultтак что объект выживет за пределами области лямбды, в которой он создан.Или, по крайней мере, я верю, что именно поэтому это делается.

Но я не понимаю, почему он передается в экземпляре самого себя, когда документы не указывают, что у него есть конструктор, который может принимать такой параметр.

Я быПодумайте, что такая строка:

    stream->set_result(cisco::efm_sdk::UniqueActionResultPtr{
      new cisco::efm_sdk::ActionValuesResult(cisco::efm_sdk::ActionError)
                                               .add_value(false)
                                               .add_value("Could not set value")});

на самом деле имеет больше смысла.Я включил снимок экрана с документами.И они находятся здесь онлайн:

https://github.com/CiscoDevNet/kinetic-efm-cpp-sdk/blob/master/efm-cpp-sdk-1.0.15-ie4k-dslink-dev/docs/index.html

Заранее спасибо, и мои извинения, если я упускаю что-то основное.

-Роберт Байндуров

Documentation

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