将类型导出到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
时,出现了这个错误:
类型错误:没有找到将C++类型转换为Python的转换器: ConfigManager
我哪里做错了呢?
1 个回答
2
copy_non_const_reference
会尝试复制你对一个 Python 对象的引用,但你应该使用 bp::reference_existing_object
。我在这里试过,错误信息就消失了。