У меня есть python, встроенный в приложение C++. C++ вызывает python и передает его в качестве аргумента объекту C++. этот объект имеет некоторые виртуальные функции и может быть базовым классом для некоторого производного класса. Как заставить boost::python понять, что это виртуальная функция?
рассмотрите следующее:
в C++:
class Base {
public:
virtual void func();
}
class Derived {
public:
virtual void func();
}
BOOST_PYTHON_MODULE(module_api) {
class_<Base>("Base")
.def("func", &Base::func); // ?? what should I put here?
}
int main() {
//... initialization
Derived derived;
main_namespace["pyentry"](&derived);
}
в питоне:
def pyentry(baseref):
baseref.func() # here I want Derived::func() to be called
Что я здесь делаю неправильно?
void Base::doFunc() { this->func(); }
,.def("func", &Base::doFunc);
- person Robᵩ   schedule 10.05.2012