【发布时间】:2020-12-16 01:05:58
【问题描述】:
我有一个带有虚方法的 C++ 类:
//C++ A级 {
public:
A() {};
virtual int override_me(int a) {return 2*a;};
int calculate(int a) { return this->override_me(a) ;}
};
我想做的是使用 Boost.python 将这个类公开给 Python,从 Python 中的这个类继承并有正确的覆盖调用:
#python:
class B(A):
def override_me(self, a):
return 5*a
b = B()
b.calculate(1) # should return 5 instead of 2
我想对纯虚函数做同样的事情。我正在寻找一种不在类 A 上创建 C++ 中的任何包装类的方法。这可能吗?如果是/如果不是,我该怎么做?
【问题讨论】:
-
“不在 C++ 中在 A 类上创建任何包装类” - 要求有多强? :-)
-
无强要求。如果它是可以实现的,那么它对我有好处
-
有一种标准的方法可以用 boost::python 将 C++ 类暴露给 Python,你试过了吗? (我个人推荐 pybind11 而不是 boost::python,这两个包在精神上非常相似,所以想法和技术可以继承)。
-
this 似乎是你想要的,但我无法让它工作:-D
-
你为什么推荐 pybind11 而不是 boost @n.'pronouns'm。
标签: python c++ boost virtual boost-python