@frilix
Иногда "творю"

Не работает вставляется в вектор?

Доброго времени суток! Делаю курсовую работу для универа. Слова у меня это вектор. Но вот что интересно при добавлении в вектор слов нового слова он крашится, причем если 2 - 3 вставки работают нормально, а вот дальше просто крашится.

void Line::CreateNewWord( string character )
{
    int i;

    // Определение позиции итератора
    for ( i = 0, it = words.begin(); it < words.end(); it++, i++)
        if( i == activeWord )
            break;

    // Если не первое слово
    if( width )
        activeWord++;

    // Создание нового слова
    word = new Word();
    word->Insert( character );
    words.insert( it, *word );

    width += FONT_WIDTH;
}


Из-за чего такое может быть?
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
Nipheris
@Nipheris Куратор тега C++
it < words.end();

Старайтесь итераторы сравнивать с помощь == и !=. Сравнение на больше/меньше работает не со всеми итераторами, не стоит привыкать к нему.

*word

Конструктор копирования корректно определили? Даже если да, зачем такие извращения с созданием объекта сначала на куче, а потом его копирования по значению? не проще ли работать с Word на стеке или наоборот, сохранять в вектор указатель? Вы кстати еще и забываете удалить созданный на куче объект класса Word.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Drakonn
@Drakonn
Инженер-программист
ох уж эти любители глобальных переменных, лапки бы поотрывать.. а так - дебажте и смотрите когда вы выходите за пределы вектора, строки или ещё чего, а на будущее - откажитесь от глобальных переменных и делайте больше проверок в методах, дабы избавитьсч от крашей и показывать причины произошедшего. Кстати дебагом отлично выловите, раз вы в курсе, что именно на 2-3 добавление прога ломается
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы