В настоящее время я пытаюсь обернуть 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()
?? И что это за оператор?
config.can_resolve(pipeline)
, не до конца понимая, что это такое. Но это не сработало, потому что мойpipline
был указателем, поэтому компилятор сказал, что типы несовместимы... Теперь он работает сconfig.can_resolve(*pipline)
- person daKenpachi   schedule 22.08.2018