将Python强制转换为不完整类

将Python强制转换为不完整类,python,boost,Python,Boost,有没有一种方法可以在boostpython中只知道接口的类之间进行强制转换 考虑以下示例: // ---------- Module A ---------- class A_ifc { public: virtual int foo() = 0; }; class A_impl : public A_ifc { public: int foo() {...} }; BOOST_PYTHON_MODULE(Module_A) { class_<A_impl,

有没有一种方法可以在boostpython中只知道接口的类之间进行强制转换

考虑以下示例:

// ---------- Module A ----------

class A_ifc
{
public:
    virtual int foo() = 0;
};

class A_impl : public A_ifc
{
public:
    int foo() {...}
};

BOOST_PYTHON_MODULE(Module_A)
{
    class_<A_impl, boost::noncopyable>("A", no_init)
        .def("foo", &A_impl::foo)
    ;
}

// ---------- Module B ----------

class B_ifc
{
public:
    virtual int cross_module_operation(A_ifc* a) = 0;
};

class B_impl : public B_ifc
{
public:
    int cross_module_operation(A_ifc* a) {...}
};

BOOST_PYTHON_MODULE(Module_B)
{
    class_<B_impl, boost::noncopyable>("B", no_init)
        .def("cross_module_operation", &B_impl::cross_module_operation)
    ;
}
/------------模块A----------
A类国际金融公司
{
公众:
虚拟int foo()=0;
};
A类实施:公共A\U ifc
{
公众:
int foo(){…}
};
BOOST_PYTHON_模块(模块A)
{
类),但每当我编译任何包含“Boost::python::return\u value\u policy”的Boost代码时,应用程序就会在启动时崩溃,并出现访问冲突。
我还研究了自定义转换器(请参阅),但我不知道如何将此概念应用于我的问题


非常感谢您提供的任何帮助

,事实证明,只要启用了运行时类型信息,就可以强制转换到抽象基类

换句话说,这将起作用:
objects::register_conversion();

我觉得有点傻,因为我之前没有尝试过这么明显的解决方案