2 / 2 / 3
Регистрация: 24.01.2016
Сообщений: 20

Абстрактный класс, удаление наследника из std::vector<T>

01.06.2016, 18:52. Показов 879. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При удалении через итератор выбивает ошибку в ходе выполнения программы.

Имеется абстрактный класс:
C++
1
2
3
4
5
6
7
8
9
10
class Fruit :
    public System
{
public:
    sf::RectangleShape shape;
    virtual void Draw() = 0;
 
    Fruit(vec2f position);
    ~Fruit(void);
};
Наследник:
C++
1
2
3
4
5
6
7
8
9
#include "fruit.h"
class Apple :
    public Fruit
{
public:
    virtual void Draw();
    Apple(vec2f position);
    ~Apple(void);
};
Добавляю объект в вектор Fruit*:
C++
1
fruit.push_back(new  Apple(vec2f(100, 100)));
Удаляю:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for (std::vector<Fruit*>::iterator it = fruit.begin(); it != fruit.end();)
{
    Fruit *fr = *it;
    if(true)
    {
        it = fruit.erase(it); // Ошибка при удалении (
        delete fr;
    }
    else 
    {
        fr->Draw();
        it++;
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.06.2016, 18:52
Ответы с готовыми решениями:

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же числа, но не в виде строк, а в виде...

Создать абстрактный класс фигур и сделать 2 наследника (треугольник, прямоугольник)
Доброго времени суток. Задание такое : создать абстрактный класс фигур и сделать 2 наследника( треугольник, прямоугольник) и сделать...

Как передать целочисленную матрицу типа std::vector<std::vector<int> > в функцию?
Здравствуйте. Почитал на форуме, но так и не понял что я делаю не так. Имеется двумерный вектор. Размера .. Нужно его передать в...

5
Неэпический
 Аватар для Croessmah
18129 / 10713 / 2064
Регистрация: 27.09.2012
Сообщений: 27,004
Записей в блоге: 1
01.06.2016, 19:04
возможно, накосячили при работе с вектором или еще чем.
Здесь я ошибки не вижу, во всяком случае в фрагменте с удалением элемента вектора.


P.S. Коли уж SFML, то почему не наследоваться от sf::Drawable и sf::Transformable?
0
2 / 2 / 3
Регистрация: 24.01.2016
Сообщений: 20
01.06.2016, 19:06  [ТС]
Это образный пример нерабочего кода.
Ошибка звучит как несовместимый тип итератора.

Погуглил, нашёл подобные вопросы, но внятного ответа так и не нашёл.
Советуют Boost shared_ptr
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
01.06.2016, 19:09
Ты рабочий давай, место ошибки и текст ошибки.
0
Неэпический
 Аватар для Croessmah
18129 / 10713 / 2064
Регистрация: 27.09.2012
Сообщений: 27,004
Записей в блоге: 1
01.06.2016, 19:11
Цитата Сообщение от nmcf Посмотреть сообщение
Ты рабочий давай, место ошибки и текст ошибки.
И как вектор fruit объявлен, а то там может тоже что-то не то.
0
2 / 2 / 3
Регистрация: 24.01.2016
Сообщений: 20
01.06.2016, 19:18  [ТС]
Сработала магия и все заработало! Извините за беспокойство и спасибо за помощь)
Ошибка была допущена мной, т.к. я сразу же добавлял новый фрукт после удаления внутри цикла прохождения итераций.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.06.2016, 19:18
Помогаю со студенческими работами здесь

Абстрактный класс и std::sort
Добрый день, Не компилируется строка: std::vector&lt;mtl::io::QtFile*&gt; *vec; ... mtl::misc::Sort(vec); // ЭТА СТРОКА ...

Как инициализировать абстрактный класс в контейнере vector
Есть абстрактный класс MyDebugger, от него унаследовал два класс MyDebugger1 и MyDebugger2. Мне необходимо хранить объекты унаследованных...

Удаление элементов из std::vector
У меня есть класс Zone. Но объявлен как массив vector в другом классе. class World { public: std::vector&lt;Zone*&gt;Zones; ...

Удаление элемента из std::vector<>
- Здравствуйте завсегдатаи! Подскажите пожалуйста, можно ли из STL-ского вектора std::vector&lt;int&gt; удалить не последний элемент...

Удаление элемента из вектора ( std::vector<Bullet> )
Здравствуйте! У меня возникла проблема во время удаления элементов, значения которых не удовлетворяли условию. П.С: До того как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru