我正在尝试将可选参数从 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
您只需从 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()