доступ к методу оператора shared_ptr? (librealsense)

В настоящее время я пытаюсь обернуть LibRealsense в плагин Unreal 4. Эта библиотека предоставляет некоторый C API, а также некоторый C++ API (оборачивающий его C API), поэтому я использую C++ (что имеет смысл для Unreal).

Но есть своего рода перегрузка операторов, которую я никогда раньше не видел (в rs_pipeline.hpp):

class pipeline
{
public:

    pipeline(context ctx = context())
...
    operator std::shared_ptr<rs2_pipeline>() const
    {
        return _pipeline;
    }

private:
    context _ctx;
    std::shared_ptr<rs2_pipeline> _pipeline;
}

rs2_pipeline — это C-тип конвейера, к нему обращаются во всех классах С++ как к общему указателю. Например:

 class config
 {
 public:
 ...
     bool can_resolve(std::shared_ptr<rs2_pipeline> p) const
 ...
 }

Поэтому, когда я пытаюсь вызвать config.can_resolve с помощью моего объекта «конвейер» C++, мне нужно получить внутренний shared_ptr<rs_pipline>. Но как мне позвонить operator shared_ptr<rs_pipline()?? И что это за оператор?


person daKenpachi    schedule 22.08.2018    source источник
comment
Это определяемый пользователем оператор преобразования, а также известный как оператор приведения.   -  person Some programmer dude    schedule 22.08.2018
comment
Спасибо, теперь я знаю, что это такое! =) На самом деле, моей первой попыткой было просто написать config.can_resolve(pipeline), не до конца понимая, что это такое. Но это не сработало, потому что мой pipline был указателем, поэтому компилятор сказал, что типы несовместимы... Теперь он работает с config.can_resolve(*pipline)   -  person daKenpachi    schedule 22.08.2018