我有一个多维向量的声明
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 &