У меня возникает следующая проблема. Я хочу создать многомерный массив указателей на использование объекта boost :: multi_array, но даже если код, который я пишу, компилируется, когда я пытаюсь запустить в Eclipse, программа завершается и ничего не печатается. Позвольте мне проиллюстрировать очень маленький пример, если это может помочь. Так иметь следующий очень небольшой простой класс:Пытается использовать boost :: multi_array указателя объекта
class example {
public:
example();
virtual ~example();
int a;
};
Я просто пытаюсь создать и использовать multi_array указателей этого класса следующим образом:
int main() {
typedef boost::multi_array<example * , 2> array_type1;
array_type1 DE(boost::extents[2][2]);
DE[0][0]->a=6;
DE[1][0]->a=7;
DE[0][1]->a=8;
DE[1][1]->a=9;
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return 0;
}
Примечание как хорошо, что когда я запускаю тот же код, используя boost/test/minimal.hpp (http://www.boost.org/doc/libs/1_46_1/libs/test/doc/html/minimal.html), чтобы проверить, что происходит, и в результате основное выглядит так:
int test_main(int, char*[]){
typedef boost::multi_array<example * , 2> array_type1;
array_type1 DE(boost::extents[2][2]);
DE[0][0]->a=6;
DE[1][0]->a=7;
DE[0][1]->a=8;
DE[1][1]->a=9;
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return boost::exit_success;
}
я получаю следующее сообщение:
/usr/include/boost/test/minimal.hpp(123): exception "memory access violation at address: 0x00000008: no mapping at fault address" caught in function: 'int main(int, char**)'
**** Testing aborted.
**** 1 error detected
Любые предложения о том, как решить это было бы очень полезно для меня прямо сейчас!
Я бы начал с чтения хорошей [книги на C++] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) и _not using pointers_ – sehe