Как я могу реализовать класс C ++ в Python, который будет вызываться C ++?

У меня есть интерфейс класса, написанный на C ++. У меня есть несколько классов, которые реализуют этот интерфейс, также написанный на C ++. Они вызываются в контексте более крупной программы на C ++, которая по существу реализует «main». Я хочу иметь возможность писать реализации этого интерфейса на Python и позволять использовать их в контексте более крупной программы на C ++, как если бы они были только что написаны на C ++.

Там было много написано о взаимодействии Python и C ++, но я не могу понять, как делать то, что я хочу. Самое близкое, что я могу найти здесь:http://www.cs.brown.edu/~jwicks/boost/libs/python/doc/tutorial/doc/html/python/exposing.html#python.class_virtual_functions, но это не совсем правильно.

Чтобы быть более конкретным, предположим, что у меня есть существующий интерфейс C ++, определенный примерно так:

// 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

Затем, вернувшись в свой код C ++, я хочу сказать что-то вроде:

// mymain.cc
void main(...) {
  ... some magic c++ stuff ...
  myif c = MyCl();  // get the python class
  cout << c.myfunc(5) << endl;  // should print 10
}

Надеюсь, это достаточно понятно;)

Ответы на вопрос(6)

Ваш ответ на вопрос