У меня есть класс, в котором есть член с именем _Emails.Это типа set<PEmail*>
.Когда я нахожусь в функции-члене и запускаю следующий код, он работает как положено:
for( set<PEmail*>::iterator it=this->_Emails->begin(); it!=this->_Emails->end(); ++it )
{
cout << "Email: " << (*it)->getEmail() << endl;
}
То есть выдает список адресов электронной почты.Теперь я хотел бы иметь возможность добавлять к этому набору по мере роста класса и не терять свое место в последней итерации.Я попытался сделать другого члена моего класса с именем _EmailItr типа set<PEmail*>::iterator
.Я инициализирую его в своем конструкторе, сразу после _Emails, вот так:
this->_Emails = new set<PEmail*>;
this->_EmailItr = this->_Emails->begin();
Затем, пытаясь сделать аналогичный цикл for:
// send the max queue amount, or until there are no more emails
for( int i=0; i<this->_QueueSize || i==_Emails->size(); ++i )
{
cout << "i: " << i << endl;
cout << "QueueSize: " << this->_QueueSize << endl;
cout << "Emails: " << this->_Emails->size() << endl;
cout << (*_EmailItr)->getEmail() << endl;
}
, я получаю следующий вывод:1012 *
i: 0
QueueSize: 2
Emails: 2
Segmentation fault
Что дает?Я пытаюсь использовать итераторы ненадлежащим образом?