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);
    }
}

我想要做的是用来自 Catalog_objects 的 ofxImages 的向量填充主要的 front_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 &
4

1 回答 1

2

最有可能在

front_objects[numTag].resize(2);

numTag持有无效索引。

没有相关代码很难说。实际上,您是在说每次走进厨房时都会听到奇怪的声音。卡在两个东西之间的猫的照片使它很可能是猫,但也可能是其他东西。:-)

干杯&hth.,

于 2010-11-04T12:09:12.303 回答