gpt4 book ai didi

c++ - pybind11 中 protected 虚拟析构函数

转载 作者:行者123 更新时间:2023-11-28 04:17:42 25 4
gpt4 key购买 nike

<分区>

我想绑定(bind)第三方库中的类。该类有一些纯虚函数,但析构函数是 protected 和虚拟的。

为了绑定(bind)类,我必须编写一个派生类来覆盖纯虚函数 (https://pybind11.readthedocs.io/en/stable/advanced/classes.html)

所以代码是这样的

class Parent {  
public:
virtual void foo() = 0;
protected:
virtual ~ Parent() //Dtor
{
}
};

class PyParent : public Parent
{
public:
void foo () override {
PYBIND11_OVERLOAD_PURE(
void,
Parent,
foo
);
}
};

void init(py::module & m) {
py::class_<Parent, PyParent> p(m, "p");
}

但是,由于基类的析构函数被声明为protected,所以会抛出如下错误

error: ‘virtual Parent::~Parent()’ is protected
virtual ~ Parent() //Dtor

我无法修改基类,因为它是第三方库。

知道用 pybind11 绑定(bind)类吗?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com