我有一个单例(来自 boost::serialization):
class LogManager : public boost::serialization::singleton<LogManager> { ... };
以及用于获取实例的包装:
inline LogManager &logManager() { return LogManager::get_mutable_instance(); }
将其绑定到 boost.python 模块的正确方法是什么?
I tried:
class_< LogManager, boost::serialization::singleton<LogManager> >("LogManager", no_init)
...
;
结果 - 控制台中出现很多丑陋的错误文本。怎么了?
除了使用bases<...>
在 Autopulated 指出的第二个参数中,我认为您还想指定boost::noncopyable
作为第三个模板参数,例如
bp::class_<LogManager, bp::bases<boost::serialization::singleton<LogManager> >, boost::noncopyable>("LogManager", bp::no_init)
Edit:
此外,您需要为列出的任何基类提供类声明,例如
bp::class_<boost::serialization::singleton<LogManager>, boost::noncopyable>("Singleton", bp::no_init)
或者,如果您不需要访问基类并且不会导出任何其他子类boost::serialization::singleton<LogManager>
,那么您可以首先省略指定基类。也就是说,如果您只想公开以下声明就可以了LogManager
class:
bp::class_<LogManager, boost::noncopyable>("LogManager", bp::no_init)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)