将类型导出到Python

2 投票
1 回答
581 浏览
提问于 2025-04-16 13:59

我想把一个单例模式的对象导出到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。我在这里试过,错误信息就消失了。

撰写回答