Boost logo

Boost Users :

From: Anand, Kumar (kanand_at_[hidden])
Date: 2006-05-23 22:45:43


Well marking the copy constructor as private is not required since dtor
is already marked as private.

You will not be able to copy construct by saying something like
A *a = new A();
A a' = A(*a) //This will fail because dtor of A is private.

However making the python wrapper class as boost::noncopyable works. It
seems, if you do not mark the wrapper class as "noncopyable", boost
python internally generates some code which requires public dtor.

Kumar
-----Original Message-----
From: boost-users-bounces_at_[hidden]
[mailto:boost-users-bounces_at_[hidden]] On Behalf Of Dale McCoy
Sent: Wednesday, May 17, 2006 6:24 PM
To: boost-users_at_[hidden]
Subject: Re: [Boost-users] Exposing Class with Private ctor and dtor

> A class has static method to create and a static method to destroy.
And the
> constructors and destructor of the class is marked as private. How do
I
> expose such a class in Python?
> <snip code>

In the code you posted, the default constructor is indeed private, but
the copy constructor is not. Was that intentional? If so, then it's
still possible to write A otherA(A::create()); which requires public
access to ~A() in order to destroy otherA. If it was not intentional,
does explicitly privitizing the copy-constructor work? (Or make it
clear where Boost::Python wants to copy-construct an A?)

Dale
_______________________________________________
Boost-users mailing list
Boost-users_at_[hidden]
http://lists.boost.org/mailman/listinfo.cgi/boost-users


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net