[C++-sig] C++ singleton
wl at flexis.de
Mon Oct 24 12:50:30 CEST 2005
> I am actually writing an interface to python for an existing C++ library
> using Boost. This library has a C++ singleton class. This class has only one
> constructor (with arguments) which is “protected” because it’s a singleton.
> I am not able to build a Boost interface to this class because the
> compiler complains that the constructor I have given to Boost
> in the class_xxx constructor argument is not public (which is true) !
> Therefore, my question is simple : How is it possible to interface such
> a class with only one constructor which is protected and a static method
> to create/access the object ?
Don't export the constructor, use no_init.
Declare the static method which returns the only instance as staticmethod.
Example code, not tested:
class_<MySingleton, boost::noncopyable>("MySingleton", no_init)
.def("get", &MySingleton::get, return_internal_reference<>())
For more information see tutorial an reference:
For code examples look at the unit tests or other projects using boost:python.
bye by Wolfgang
More information about the Cplusplus-sig