Thanx for the reply Yung-Chin.

It compiles ok, what i get is a run time error. In a single main file, it works fine too. But i had trouble when declaring the multi_array in the header file, initializing it on the construtor and then trying to assign first position to a one dimension array in one method.

It is something like this:

//class header file
boost::multi_array<char, 2> array2d;

//class cpp file
//at class constructor
array2d = boost::multi_array<char,2>(boost::extents[x][y]);

//at class method
boost::multi_array<char, 1> array1d = array2d[0];


then it compiles fine. But at runtime i get the error:
  Reference boost::detail::multi_array::value_accessor_n<T, NumDims>::access(boost::type<Reference>, boost::multi_array_types::index, TPtr, const boost::multi_array_types::size_type*, const boost::multi_array_types::index*, const boost::multi_array_types::index*) const [with Reference = boost::detail::multi_array::sub_array<char, 1u>, TPtr = char*, T = char, unsigned int NumDims = 2u]: Assertion `size_type(idx - index_bases[0]) < extents[0]' failed.


If you have an idea of what's going on, I'd be glad to know!




On Thu, May 21, 2009 at 6:22 PM, Oei, YC <oei.yungchin@gmail.com> wrote:
> //at class constructor
> boost::multi_array<char, 2> array2d = new boost::multi_array<char,
> 2>(boost::extents[x][y]);

> //at class method
> boost::multi_array<char, 1> array1d = array2d[0];

I tried out those two lines (minus the "new") here (see below), and
they compile without complaints in g++ 4.1.2.

Yung-Chin



-- contents of test file --

#include <iostream>
#include <boost/multi_array.hpp>

int main() {
   size_t x = 5;
   size_t y = 7;

   boost::multi_array<char, 2> array2d =
       boost::multi_array<char, 2>(boost::extents[x][y]);
   std::cout << array2d.num_dimensions() << std::endl;
   std::cout << array2d[0].num_dimensions() << std::endl;

   boost::multi_array<char, 1> array1d = array2d[0];
   std::cout << array1d.num_dimensions() << std::endl;
   return 0;
} //main
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users



--
Matheus Araújo Aguiar
Computer Scientist
matheus.pit@gmail.com