2016-04-06 24 views
0

Aşağıdaki sorunla karşılaşıyorum. Bir nesne kullanımı boost :: multi_array çok boyutlu bir dizi oluşturmak istiyorum, ama derleme yazmak kod, Eclipse çalıştırmak çalıştığınızda program sonlandırılır ve hiçbir şey yazdırılır. Bunun herhangi bir yardımın olması durumunda çok az örnek göstereyim.Boost :: object Kullanıcısının çoklu_dizisini kullanmaya çalışılıyor

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; 

}

Not olarak:

class example { 
    public: 
      example(); 
      virtual ~example(); 

      int a; 

}; 

Sadece oluşturmak ve aşağıdaki şekilde bu sınıfın işaretçileri multi_array kullanmayı deneyin: Yani şu çok küçük basit sınıfı olan iyi ne olup bittiğini bir kontrol yapmak için destek/test/minimal.hpp (http://www.boost.org/doc/libs/1_46_1/libs/test/doc/html/minimal.html) kullanarak aynı kodu çalıştırdığınızda ve sonuç olarak ana gibi görünüyor:

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; 

}

aşağıdaki iletiyi alırsınız:

/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 

bu şu anda çok yararlı bana olacağını nasıl çözüleceğine ilişkin herhangi bir öneriniz!

DE[0][0] de
+0

İyi bir [kitap C++] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) ve _not pointer_ – sehe

cevap

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

Sen pointer KQUEUE, ama asla o önceden gerçek example örneğine işaret yaptı.

+0

Ok tuşlarını kullanarak okumaya başladım. gözlem için çok teşekkürler! – user3111197

İlgili konular