Вектор инициализирован с размером, невозможно очистить - PullRequest
0 голосов
/ 04 ноября 2010

У меня есть это объявление многомерного вектора

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 векторами ofxImages из объектов Catalog_objects, которые могут совместно использовать некоторые векторы векторов 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 &

1 Ответ

2 голосов
/ 04 ноября 2010

Скорее всего в

front_objects[numTag].resize(2);

numTag хранится недопустимый индекс.

Без соответствующего кода сложно сказать.Фактически вы говорите, что каждый раз, когда вы заходите на кухню, вы слышите странный звук.Изображение кота, застрявшего между двумя вещами, позволяет предположить, что это кот, но может быть и другое.: -)

Приветствия и hth.,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...