我想用pybind11覆盖python中的类
这是类接口
class A {
public:
virtual bool Add(int value1, int value2, int* value3) = 0;
};
class B: public A {
public:
bool Add(int value1, int value2, int* value3) override {
PYBIND11_OVERLOAD_PURE(
bool,
B,
Add,
value1,
value2
);
// is it possible to get the return value of PYBIND11_OVERLOAD_PURE and do some computations?
}
};
void put(A& a, int value1, int value2) {
int value3;
a.Add(value1, value2, &value3);
std::cout << value3 << std::endl;
}
在c ++实现中,value3可以是value1和value2之和
这里是例子
class C: public A {
public:
C() {
}
bool Add(int value1, int value2, int* value3) override {
*value3 = value1 + value2;
return true;
}
};
现在我想在python中覆盖类A,因此我们可以有不同的实现方式
c = C()
put(c, 1, 2)
class D(A):
def Add(self, value1, value2):
# value1 + value2
# how to assign the value to the output?
return True
d = D()
# undefine value3
put(d, 1, 2)
由于python没有指针,所以我不知道如何在python端分配value3。
顺便说一句,所有类都来自第三方库,因此入侵这些类不是一个好主意。
有什么主意吗?