ALL,
У меня определен класс, который просто хранит данные (разные типы данных). У меня также есть std :: vector, который содержит указатели на объекты этого класса.
Примерно так:
class Foo
{
};
class Bar
{
private:
std::vector<Foo *> m_fooVector;
};
В какой-то момент времени в моей программе я хочу удалить элемент из этого вектора. И поэтому я пишу следующее:
for (std::vector<Foo *>::iterator it = m_fooVector.begin(); it <= m_fooVector.end(); )
{
if( checking it condition is true )
{
delete (*it);
(*it) = NULL;
m_fooVector.erase( it );
}
}
Проблема в том, что операция стирания не удалась. Когда я открываю отладчик, я все еще вижу этот элемент внутри вектора, и когда программа завершает его, он падает, потому что этот элемент находится на полпути.
В другой функции я пытаюсь удалить простой вектор std :: wstring, и все работает нормально - строка удаляется, а размер вектора уменьшается.
В чем может быть проблема для такого поведения? Конечно, я мог бы попробовать проверить функцию стирания в стандартной библиотеке MSVC, но даже не знаю, с чего начать.
ТИА !!!