2016-04-06 36 views
0

我面臨以下問題。我想創建一個使用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 

就如何解決這將是非常有幫助的,以我現在的任何建議!

+0

我想先閱讀一本好書[C++書](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)和_not using pointers_ – sehe

回答

1
array_type1 DE(boost::extents[2][2]); 
DE[0][0]->a=6; 

取消引用指針在DE[0][0],但沒有把它指向一個實際example實例事前。

+0

好的,非常感謝您的觀察! – user3111197