EDIT: Кажется, что это проблема с использованием memset
на моей структуре, вместо этого очистка вектора. Спасибо всем, кто предоставил советы!C++: проблема с очисткой вектора объектов
Я пытаюсь очистить свой вектор объектов объекта (мой собственный определенный класс), называемый людьми. Вектор сидит в структуры (PQA) и определяется следующим образом:
typedef struct _FSTRUCT_
{
const char * filePath;
std::vector<Subject> people;
long srcImageWidth;
long srcImageHeight;
STRUCT_CONFIG_PARAMS * configParam;
unsigned char * imageBuf;
int imageBufLen;
} STRUCT_FSTRUCT;
я создаю-структуру PQA по:
STRUCT_FSTRUCT *pQA = NULL;
pQA = new STRUCT_FSTRUCT();
memset(pQA,0,sizeof(STRUCT_FSTRUCT));
Я заселить «народ» с данными с помощью класса Subject 'заданные методы. Все в порядке. То, что я хотел сделать, это то сбросить «народ», т.е. очистить все данные и установите размер 0. Я называю метод ниже:
int ResetFaceCollection()
{
if (!pQA->people.empty())
{
pQA->people.clear();
}
}
clear()
линия кидает отладки утверждение не выполнено сообщение об ошибке, которое гласит «Выражение: векторные итераторы несовместимы».
Я не уверен, если это не имеет ничего общего с деструктора Субъекта:
Subject::~Subject(void)
{
}
Я не использую никаких указателей, поэтому от того, что я собрал, деструктор выглядит нормально. Я, конечно, определил деструктор в моем .h файле также ~Subject(void);
.
Я немного потерял, почему это происходит. Может ли кто-нибудь дать представление?
Приносим извинения, если я пропущен какой-либо необходимый код, может быть обновлен по запросу!
'_MYSTRUCT_' является зарезервированным идентификатором –
, зачем использовать структуру с именем weirdly с только вектором внутри? Просто используйте вектор напрямую. Также ничего, что кажется неправильным в коде, который вы показали, вы можете захотеть опубликовать немного больше. ** Редактирование: ** Ох и проверка, является ли он пустым, является излишним, '.clear()' noop anyways, если он пуст, поэтому просто вызывайте его без этого if. –
Я пропустил остальные переменные, добавлю теперь. :/ – LKB