On Oct 2, 2004, at 10:26 AM, Thomas Mensch wrote:
Dear List,
I am using boost 1.31.0 on Linux (with gcc 3.3.2) I would like to create a 2D array class, which inherits from boost::multi_array<double, 2> class. However I have problems with the copy constructor of my class Array. Below is the code, which I am trying to run.
Greetings Thomas, Though you did not supply the error message from your compiler, I suspect that the problem is this: multi_array has a templated constructor of the form: template <class T> multi_array(T const&); that will match your Array type better than the constructor with the signature: multi_array(multi_array<double,2> const&); In short, overload resolution is not selecting the constructor that you desire. You'll need to coerce your Array reference to a multi_array<double,2> reference before passing it to the constructor. Hope this helps.
#include <boost/multi_array.hpp>
class Array : public boost::multi_array<double,2> { public: Array (void) : boost::multi_array<double, 2> () {}
Array (const int nrow, const int ncol) : boost::multi_array<double, 2> (boost::extents[nrow][ncol]) {}
Array (const Array& other) : boost::multi_array<double, 2> (other) {}
~Array (void) {}
Array& operator= (const Array& rhs) { if (&rhs != this) { boost::multi_array<double, 2>::operator= (rhs); } return *this; } }; /* class Array */
I guess that I forget to provide some information to my derived class, but I cannot find which one. Is there a way to simply inherits from boost::multi_array?
Many thanks in advance,
Thomas
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users