[C++-sig] Exposing copy constructors with Boost::Python
Christopher Dawson
dawson at physics.uq.edu.au
Thu Jul 22 06:42:20 CEST 2004
Apologies if this is a common problem with a common solution, but I haven't been able to find it anywhere.
I have a simple class which stupidly has a c-style array as a member:
class Test {
public:
int *a;
Test(int N) {
a = new int[N];
}
Test(const Test& T) {
a = new int[T.N];
}
Test& operator=(const Test& T) {
if (N != T.N) {
delete[] a;
a = new int[N];
for (int i=0;i<N;i++)
a[i] = T.a[i];
}
}
~Test() {
if (a)
delete[] a;
}
};
I have wrapped this with Boost::Python (1_31_0), and understood that the copy and assignment constructors would be wrapped automatically.A
However copying the object from Python just copies the pointer, not the array. I can explicitly expose the copy constructor with
.def(init<const Test&>())
so it's possible to do
a = Test(4)
b = Test(a),
but I'd like to be able to to
b = a
Have I missed something about exposing copy constructors?
Ta,
Chris
More information about the Cplusplus-sig
mailing list