我想使用boost.python将单例导出到python并在那里使用它。这是代码:

class ConfigManager : public boost::serialization::singleton<ConfigManager> {};
inline ConfigManager &configManager() { return ConfigManager::get_mutable_instance(); }

BOOST_PYTHON_MODULE(ConfigManager)
{
    bp::class_<ConfigManager, boost::noncopyable>("ConfigManager", bp::no_init);
    bp::def("getHandle", &configManager, bp::return_value_policy<bp::copy_non_const_reference>());
}

现在,当我在python中调用getHandle时,我得到:



我做错了什么?

最佳答案

copy_non_const_reference将尝试将您的引用复制到Python对象,您应该改用bp::reference_existing_object,我在这里尝试过,错误消息消失了

07-24 14:03