0

多次元ベクトルのこの宣言があります

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 &
4

1 に答える 1

2

おそらく

front_objects[numTag].resize(2);

numTag無効なインデックスを保持しています。

関連するコードがなければ、言うのは難しいです。事実上、キッチンに足を踏み入れるたびに奇妙な音が聞こえると言っています。2 つの何かの間に挟まっている猫の写真は、それが猫である可能性を高めますが、別の何かである可能性もあります。:-)

乾杯 & hth.,

于 2010-11-04T12:09:12.303 に答える