Robert Dailey wrote:
Hi,
I have a C++ class that I'm exposing to Python via the Boost.Python
library. This specific class is only created from C++. In other words,
it doesn't serve the user very much good to construct an instance of
this class from Python. A typical use case for obtaining an instance
of this class from python is as follows:
import myCustomModule
fooInstance = myCustomModule.GetFooInstance()
However, I want to prevent the user from being able to do this:
import myCustomModule
fooInstance = myCustomModule.Foo()
Let's assume the class in question with private construction is Foo.
The latter code snippet would be an example of the user directly
constructing an instance of Foo(). Is there a way to prevent this
through the BOOST_PYTHON_MODULE() definition? I'm not even really sure
if this can be done natively through Python. Thanks.
You can specify a 'noinit<>' argument to the class_<> constructor,
indicating you don't want this to expose any constructor. Then, you may
use make_constructor to provide your own custom construction (factory)
function instead.
Please look for details in the online tutorial and reference manual, as
well as the examples / tests that are part of the sources.
HTH,
Stefan
--
...ich hab' noch einen Koffer in Berlin...
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig