Я хочу переопределить класс в python с помощью pybind11
Вот интерфейс класса
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 ++ значение3 может быть суммой значения1 и значения2
Вот пример
class C: public A {
public:
C() {
}
bool Add(int value1, int value2, int* value3) override {
*value3 = value1 + value2;
return true;
}
};
Теперь я хочу переопределить класс A в python, поэтому у нас может быть другая реализация
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 нет указателя, я понятия не имею, как назначить значение 3 на стороне Python.
кстати, все классы из сторонней библиотеки, так что взламывать эти классы не очень хорошая идея.
Есть идеи?