У меня есть интерфейс класса, написанный на С++. У меня есть несколько классов, которые реализуют этот интерфейс, также написанный на С++. Они называются в контексте более крупной программы на С++, которая по сути реализует "основную". Я хочу иметь возможность писать реализации этого интерфейса в Python и разрешать их использовать в контексте более крупной программы на С++, как если бы они были просто написаны на С++.
Было много написано о взаимодействии python и С++, но я не могу понять, как делать то, что я хочу. Ближайший я могу найти здесь: http://www.cs.brown.edu/~jwicks/boost/libs/python/doc/tutorial/doc/html/python/exposing.html#python.class_virtual_functions, но это не совсем правильно.
Чтобы быть более конкретным, предположим, что у меня есть существующий интерфейс С++, что-то вроде:
// myif.h
class myif {
public:
virtual float myfunc(float a);
};
То, что я хочу сделать, это что-то вроде:
// mycl.py
... some magic python stuff ...
class MyCl(myif):
def myfunc(a):
return a*2
Затем, в моем коде на С++, я хочу сказать что-то вроде:
// mymain.cc
void main(...) {
... some magic c++ stuff ...
myif c = MyCl(); // get the python class
cout << c.myfunc(5) << endl; // should print 10
}
Я надеюсь, что это достаточно ясно;)