我想以正确的方式去做。我已经看到在这里公开 boost::serialization::singleton Boost python export singleton但我不想使用它。我想改用简单的 meyers 单例。
下面的代码有效,但文档说使用 http://www.boost.org/doc/libs/1_43_0/libs/python/doc/v2/reference_existing_object.html#reference_existing_object-spec/ 是危险的。
代码:
class Singleton
{
private:
Singleton(){};
public:
static Singleton & getInstance()
{
static Singleton instance;
return instance;
}
int getNumber() { return 5; }
};
在模块中:
class_<Singleton>("singleton", no_init)
.def("getInstance", &Singleton::getInstance, return_value_policy<reference_existing_object>()).staticmethod("getInstance")
.def("getNumber", &Singleton::getNumber)
;
有什么好方法吗?在执行 python 代码时使用return_internal_reference<>()
导致错误。