使用pybind11,有没有办法绑定一个c++函数,它需要一个指向自定义类型的双指针抽象类

问题描述

使用 pybind11,我试图将双指针绑定到自定义类型(抽象类)。但我没有看到任何解释如何操作的示例。

我有ITest,它是抽象的,具有纯虚函数,它将参数作为指向其他抽象类IValue的双指针,如下面的代码片段所示。

    '''
        class IValue
        {
          virtual long get() = 0;
        }
        
        class ITest
        {
        virtual fnDoublePointerarg(wchar_t* value,IValue** obj) = 0;
        }
    '''

如何在 pybind 中为类创建双指针绑定?任何实现它的示例,不胜感激。

更多详情:

我创建了一个trampoline类,因为它是抽象类,pybind11无法实例化如下

class PyIValue : public IValue
{
  public IValue::IValue;
  long get(){
    PYBIND11_OVERRIDE_PURE(
            long,IValue,get,);
  }

};

class PyITest : public ITest
{
public:
    using ITest::ITest;
    int fnDoublePointerarg(const wchar_t* domainId,IValue** ppOb)  {
        PYBIND11_OVERRIDE_PURE(
            int,ITest,fnDoublePointerarg,std::wstring domainId,IValue** ppOb);
   }
};

PYBIND11_MODULE(Example,m) {
    m.doc() = "pybind11 example plugin"; // Optional module docstring
    
    py::class_<ITest,PyITest>(m,"ITest")
        .def(py::init<>())
        .def("fnDoublePointerarg",ITest::fnDoublePointerarg)

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)