使用 pybind11 将抽象类作为参数作为参数传递
Posted
技术标签:
【中文标题】使用 pybind11 将抽象类作为参数作为参数传递【英文标题】:Passing abstact classes as parameters as parameter with pybind11 【发布时间】:2017-09-21 13:44:48 【问题描述】:这是我的问题:
我有两节课
class A
A();
virtual void hello() = 0;
第二个类,在其构造函数中将此类作为参数
class B
B(const A var);
...
对于 a 类,我可以使用文档中描述的蹦床类。如果我尝试为第二个类创建绑定,则会收到以下编译错误:
error: invalid abstract parameter type
使用以下绑定:
PYBIND11_MODULE(module,m)
py::class<A,PyA>(m,"A")
.def(py::init<>());
py::class<B>(m,"B")
.def(py::init<const A>());
我怎样才能传递这样的参数?
谢谢!
【问题讨论】:
【参考方案1】:B 签名无效 - 无法实例化抽象类并按值传递。
应该是这样的
void B(const A*);
【讨论】:
以上是关于使用 pybind11 将抽象类作为参数作为参数传递的主要内容,如果未能解决你的问题,请参考以下文章
如何将子类作为期望基类的函数的参数传递,然后将该对象传递给指向这些抽象类对象的指针向量?