Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.97/29: Рейтинг темы: голосов - 29, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114

SFML. Вектора, массивы, классы, объекты

01.11.2017, 21:59. Показов 6903. Ответов 67

Студворк — интернет-сервис помощи студентам
Доброго времени суток форумчане!
Возникла проблема с векторами. но понимаю как работают эти самые векторы.
Задача такова, есть абстрактный класс Object с какими-то функциями(это не столь важно). Так же есть дочерние классы такие как Circle и Circle2. В главной функции создаются новые объекты дочерних классов и заносятся в массив.
НО когда хочу сделать через вектор то выдаёт ошибку: "error: 'vector' does not name a type".
так же по мере решения это проблемы будет ещё несколько вопросов таких как: "Как реализовать уничтожение объектов Массива/Вектора", "Как сделать универсальную функцию определения координат курсора в окне"
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.11.2017, 21:59
Ответы с готовыми решениями:

Не отрисовываются объекты openGL3.0 в SFML
Почему-то не отрисовываются объекты "нового" опенгл. Старый работает нормально. Перепробовал уже кучу примеров, толку никакого. ...

Из первых четырех строк массива сформировать четыре новых вектора (одномерные массивы). Для каждого вектора найти сумму
Дан двухмерный массив размером M x N. Преобразовать его по правилу – все элементы каждого столбца матрицы умножить на минимальный...

Классы и объекты
Добрый день всем.Хотел узнать кое что,надеюсь вопрос будет соответствовать название темы:) На лабораторной поставили задачу,создать...

67
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
02.11.2017, 19:26  [ТС]
Студворк — интернет-сервис помощи студентам
хмм можно сделать функцию через которую каким-то образом удалять объект вызывающий эту функцию?

Добавлено через 3 минуты
вот часть кода объекта Circle2:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class Circle2 : public Object{
public:
    float x, XX, y, YY, speed, R=25;
    int dir;
    Object* ID;
 
    RenderWindow *window;
    CircleShape shape;
 
    void Create(){
        ...
    }
 
    void Update(){
        Step();
        Draw();
    }
 
private:
    void Step(){
 
        ...
 
        if (distance_to_point(x, y, mouse_xy(0, window), mouse_xy(1, window))<R){
            shape.setFillColor(Color(75,150,160));
            if (Mouse::isButtonPressed(Mouse::Left))
                //после этого объект должен удалиться
        }
        else
            shape.setFillColor(Color(100,175,200));
    }
 
    void Draw(){
        shape.setPosition(x, y);
        window->draw(shape);
    }
    //~Circle2(){}
};
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
02.11.2017, 19:29
Что мешает удалять его снаружи?
0
 Аватар для Kuzia domovenok
4268 / 3328 / 926
Регистрация: 25.03.2012
Сообщений: 12,545
Записей в блоге: 1
02.11.2017, 19:30
Откуда вызывается circle2::update?
0
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
02.11.2017, 19:31  [ТС]
Я не понимаю как это сделать
Знаю что объект должен удаляться после этого:
C++
1
2
3
if (distance_to_point(x, y, mouse_xy(0, window), mouse_xy(1, window))<R){
            shape.setFillColor(Color(75,150,160));
            if (Mouse::isButtonPressed(Mouse::Left))
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
02.11.2017, 19:31
То, что у тебя Create(), обычно делает конструктор.
0
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
02.11.2017, 19:37  [ТС]
обновление всех объектов на экране
C++
1
2
3
4
5
void Update(){
    for (std::vector<Object*>::iterator i = obj.begin(); i != obj.end(); ++i){
        (*i)->Update();
    }
}
Добавлено через 35 секунд
Я знаю про конструктор, просто сейчас не в этом дело

Добавлено через 4 минуты
объект Circle/Circle2 создаются в функции main и тут же записываются в вектор
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
02.11.2017, 19:39
Из цикла своего удаляй. В чём проблема?
0
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
02.11.2017, 19:39  [ТС]
Сами классы в свою очередь отдельные файлы как и их родительский класс Object
0
 Аватар для Kuzia domovenok
4268 / 3328 / 926
Регистрация: 25.03.2012
Сообщений: 12,545
Записей в блоге: 1
02.11.2017, 19:39
обновление всех объектов на экране
C++
1
2
3
4
5
6
7
8
void Update(){
    for (std::vector<Object*>::iterator i = obj.begin(); i != obj.end(); /* i ++ */ ){
         if (   (*i)->Update() == false)
               i = obj.erase(i);
          else
                 ++i;
    }
}
0
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
02.11.2017, 19:43  [ТС]
То есть функция обновления должна возвращать есть ли объект или нет?

Добавлено через 2 минуты
так если я удалю объект из вектора, то сам объект удалиться?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
02.11.2017, 19:48
Нет, нужен delete.
0
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
02.11.2017, 19:54  [ТС]
И где использовать delet?

Добавлено через 19 секунд


Добавлено через 3 минуты
Нужен простой, универсальный способ удаления дочерних объектов класса Object, чтоб я мог прописать команду и после неё объект бы удалился
0
 Аватар для Kuzia domovenok
4268 / 3328 / 926
Регистрация: 25.03.2012
Сообщений: 12,545
Записей в блоге: 1
02.11.2017, 19:58
Да, так и надо делать. Хранить в векторе и обрабатывать вектор так как я написал. При чем тут delete непонятно. Я никаких delete'ов в коде не писал.
0
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
02.11.2017, 20:00  [ТС]
Я не знаю как это реализовать, но надо сделать.
В самом "проекте" при запуске, если нажимаешь на шифт или ктрыл, то создаётся объект Circle и Circle2, при попадание на них курсора мыши, они меняют цвет на более тёмный и в итоге если нажимаешь ЛКМ эти объекты должны удалиться, то есть:
1) Перестать отображаться.
2) перестать занимать память.
Должны перестать существовать.
0
 Аватар для Kuzia domovenok
4268 / 3328 / 926
Регистрация: 25.03.2012
Сообщений: 12,545
Записей в блоге: 1
02.11.2017, 20:16
Чем тебя мой кот не устраивает?
Ты наивно думаешь, что после vector.erase что-то будет занимать память?
0
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
02.11.2017, 20:18  [ТС]
ну ведь в векторе хранятся не объекты а указатели на эти объекты... и в этом я не уверен как раз
0
 Аватар для Kuzia domovenok
4268 / 3328 / 926
Регистрация: 25.03.2012
Сообщений: 12,545
Записей в блоге: 1
02.11.2017, 20:23
Я уже и забыл про это. Ну тогда перед erase ставим delete;
C++
1
2
delete *i;
i = obj.erase(i)
0
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
02.11.2017, 20:28  [ТС]
вот теперь я согласен но по идее Update ничего не возвращает.
Но у меня появилась идея!
C++
1
2
3
4
5
6
7
if (   (*i)->Delete() == true){
       delete *i;
       i = obj.erase(i);
}else{
       (*i)->Update();
       ++i;
}
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
02.11.2017, 20:32
Цитата Сообщение от SkeiTax Посмотреть сообщение
Но у меня появилась идея!
Я тебе это предложил уже давно.
0
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
02.11.2017, 20:45  [ТС]
Я не особо хотел затрагивать функцию Обновления... Ведь эта функция нужно для обновления всех объектов

Добавлено через 7 минут
хммм сделал так:
Цитата Сообщение от SkeiTax Посмотреть сообщение
if ( * (*i)->Delete() == true){
* * * *delete *i;
* * * *i = obj.erase(i);
}else{
* * * *(*i)->Update();
* * * *++i;
}
и в итоге выдаёт ошибку...

Добавлено через 4 минуты
При создание объекта возвращает "Process returned -1073741819 (0xC0000005)"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.11.2017, 20:45

объекты и классы
Здравствуйте. Помогите с задачей. Нужно написать программу на классы и объекты. Пользователь вводит символьную строку, а программа...

Классы, объекты
Привет. Необходимо обратиться к объекту не используя (например, TextBox a = (TextBox)sender) т.к. необходимо использовать ещё и ComboBox с...

Классы и объекты
Создать объявление класса и разработать программу-драйвер, который продемонстрирует работу класса. Клас Cylinder (циліндр). Клас має...

КЛАССЫ И ОБЪЕКТЫ
Помогите с кодом: Рациональная (несократимая) дробь представляется парой целых чисел (а, b), где а — числитель, b — знаменатель....

Классы и объекты
Здравствуйте объясните пожалуйста следующую задачу Нужно создать класс данных А и класс отображения данных В при этом объекст...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru