如何将可选类型从 C++ 传递到 Cython?

问题描述 投票:0回答:1

我正在尝试将可选参数从 C++ 传递到 Cython 文件。 我不必将其写入 .pxd 和 .pyx 文件中:

[C++]

std::optional<std::shared_ptr<CPP_MyObject>> cpp_find_value();

[.pxd]

shared_ptr[CPP_MyObject] cpp_find_value()   # fix me

[.pyx]

def python_find_value(self):    # fix me
    cdef shared_ptr[CPP_MyObject] cpp_object = self.thisptr.get().cpp_find_value()
    cdef Python_MyObject python_object = Python_MyObject("0")
    python_object.thisptr = cpp_object
    return python_object
python c++ cython cythonize
1个回答
0
投票

您只需从 libcpp.Optional 导入可选即可使用它

from libcpp.optional cimport optional

optional[shared_ptr[CPP_MyObject] cpp_find_value()

然后您可以使用

has_value
value

获取可选值
cdef shared_ptr[CPP_MyObject] some_ptr
if cpp_object.has_value():
    some_ptr = cpp_object.value()
© www.soinside.com 2019 - 2024. All rights reserved.