多次元ベクトルのこの宣言があります
std::vector< vector < vector < ofxImage > > > front_objects;
次に、作成時にクラスに送信します。
Catalog_object * temp = new Catalog_object(&front_objects, numTag);
そして、私は以下を実行します:
Catalog_object::Catalog_object(vector< vector < vector < ofxImage > > > * _front_objects, int numTag) {
front_objects=_front_objects;
if (front_objects->size()<numTag+1) {
front_objects->resize(numTag+1);
}
}
私がやりたいのは、メインのfront_objectsにCatalog_objectsからのofxImagesのベクトルを入力することです。これは、ofxImagesのベクトルのいくつかのベクトルを共有する可能性があります。
問題は、「時々」ベクトルがガベージで初期化され、それをクリアしようとすると
front_objects[numTag].resize(2);
プログラムがEXC_BAD_ACCESSでクラッシュする
resize()を使用してサイズを変更する場合、空のベクトルで埋めるべきではありませんか?
ありがとう
マーク
アップデート
このようにしてみましたが、「初期化されていない参照メンバー'Catalog_object::front_objects'」が表示されます。
Catalog_object::Catalog_object(vector< vector < vector < ofxImage > > > & _front_objects, int numTag) { // CHANGED * FOR &
std::vector< vector < vector < ofxImage > > > & front_objects; // CHANGED * FOR &
front_objects=_front_objects;
if (front_objects.size()<numTag+1) {
front_objects.resize(numTag+1);
}
front_objects[numTag].resize(2);
}
std::vector< vector < vector < ofxImage > > > front_objects;
Catalog_object * temp = new Catalog_object(front_objects, numTag); // REMOVED &