|
04.08.2011, 10:20
|
#1
|
Нуждающийся
Регистрация: 26.08.2010
Сообщений: 54
Написано 3 полезных сообщений (для 3 пользователей)
|
С++ и Блитц Параллели
Добрый день!
я работал на Blitz3d, а теперь начал изучать С++ и наверное, как и у большинства новичков, много глупых вопросов
Насколько я понял, классы в С++ это тоже, что и Типы в ББ. Как мне реализовать следующие моменты на С++, которые в ББ я бы написал так:
---------------------------
o.Object = New Object // создание одного нового экземляра
// допустим, что Тип (Класс) Object был объявлен где-то выше
---------------------------
for o.Object = each Object // перебор всех экземпляров 'o' типа Object
// some code
next
---------------------------
// ну и удаление экземпляра
Delete o
Спасибо. буду рад помощи ))
|
(Offline)
|
|
04.08.2011, 10:36
|
#2
|
Бывалый
Регистрация: 03.12.2008
Адрес: наша раша
Сообщений: 762
Написано 129 полезных сообщений (для 245 пользователей)
|
Ответ: С++ и Блитц Параллели
1. - в С++ тоже есть оператор new.
2. - здесь тебе нужно будет самому либо :
а)сделать массив объектов
б) использовать библиотеку STL (списки или динамические массивы, с итераторами)
в) сделать простейший класс списка с контейнерами.
3. - в С++ тоже есть оператор delete
удачи!
__________________
Reality Simulation Games
Core 2 Duo 2,8GHz, RAM 1Gb, ATI R5670 1Gb. WinXP 32
|
(Offline)
|
|
04.08.2011, 10:43
|
#3
|
Нуждающийся
Регистрация: 26.08.2010
Сообщений: 54
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: С++ и Блитц Параллели
Дело в том, что учебник я ещё не дочитал. про то что есть new и delete мне известно.. видел, как они подсвечиваются при вводе.. мне интересно, как их использовать в данном случае. может напишешь небольшой примерчик?
массив объектов в данном случае не то... он ведь сразу создает определенное количество экземпляров, а не добавляет новые по необходимости (если я правильно понял эту часть)
|
(Offline)
|
|
04.08.2011, 10:44
|
#4
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: С++ и Блитц Параллели
Object * o = new Object(); // создание одного нового экземляра
// ну и удаление экземпляра
delete(o);
o = 0;
А для перебора нужно сначала создать список и добавить туда элемент.
std::list<Object*> ObjectsList;
ObjectsList.push_back(o);
//перебор
std::list<Object*>::iterator itr;
for (itr = ObjectsList.begin(); itr != ObjectsList.end(); itr++) {
//some code (*itr) - is element, access by (*itr)->
}
Однако стоит сначала почитать про память в C++. Так как даже этот неполный код таит в себе подводные камни.
Эффективное и безошибочное программирование на с++ без понимания основ управления памятью и механизма указателей невозможно.
__________________
|
(Offline)
|
|
Эти 5 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
|
|
04.08.2011, 10:49
|
#5
|
Нуждающийся
Регистрация: 26.08.2010
Сообщений: 54
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: С++ и Блитц Параллели
2 SBJoker: большое спасибо!
|
(Offline)
|
|
04.08.2011, 12:31
|
#6
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: С++ и Блитц Параллели
Согласен с ДЖокером, от себя ещё добавлю:
В данном случае, не помешает изобрести пару велосипедов. Это позволит понять необходимость и рациональность тех или иных решений в готовых библиотеках.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
04.08.2011, 19:47
|
#7
|
Бывалый
Регистрация: 03.12.2008
Адрес: наша раша
Сообщений: 762
Написано 129 полезных сообщений (для 245 пользователей)
|
Ответ: С++ и Блитц Параллели
Сообщение от Vadimich
Дело в том, что учебник я ещё не дочитал.
|
Ничто не мешает использовать учебник как справочник с примерами.
Именно я так и делал - пробежал за недельку весь курс С++. Уяснил всю картину в целом. А потом внимательно изучал нужные разделы по мере необходимости. Кстати какой у тебя учебник?
Джокер, конечно, дал тебе шпаргалку, но чтобы осознано это использовать в полном объеме, придется попотеть дружочек )))
__________________
Reality Simulation Games
Core 2 Duo 2,8GHz, RAM 1Gb, ATI R5670 1Gb. WinXP 32
|
(Offline)
|
|
05.08.2011, 22:18
|
#8
|
|
Ответ: С++ и Блитц Параллели
Лучше познай как устроен БМакса, с него прыгнуть будет проще
|
|
|
Сообщение было полезно следующим пользователям:
|
|
08.08.2011, 12:23
|
#9
|
Нуждающийся
Регистрация: 26.08.2010
Сообщений: 54
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: С++ и Блитц Параллели
конечно надо понять, как работает какой-то код, перед его бездумным использованием... у меня руководство для чайника.. Стефана Дэвиса.. я подозреваю, что он уже устарел, но думаю, что полезно будет сначала проглотить это... а после, усвоив базу, переходить к следующим.
|
(Offline)
|
|
09.08.2011, 00:07
|
#10
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: С++ и Блитц Параллели
мой любимый цикл:
for(auto ci = somelist.begin(), ei = somelist.end();ci!=ei;++ci)
{
(*ci)->Some(some,some,some);
}
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
09.08.2011, 01:03
|
#11
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: С++ и Блитц Параллели
__________________
|
(Offline)
|
|
09.08.2011, 13:23
|
#12
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: С++ и Блитц Параллели
никогда не запомню эту мутотень с итераторами.
по мне так for(int i=0;i<somelist.size();i++) куда интуитивнее.
|
(Offline)
|
|
09.08.2011, 13:26
|
#13
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: С++ и Блитц Параллели
Сообщение от Mr_F_
никогда не запомню эту мутотень с итераторами.
по мне так for(int i=0;i<somelist.size();i++) куда интуитивнее.
|
Желаю удачи в удалении какого-то элемента из середины списка в таком цикле.
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
09.08.2011, 13:49
|
#14
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: С++ и Блитц Параллели
Желаю удачи в удалении какого-то элемента из середины списка в таком цикле.
|
somelist.erase(somelist.begin()+i);
i--;
|
(Offline)
|
|
09.08.2011, 13:54
|
#15
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: С++ и Блитц Параллели
Сообщение от Mr_F_
somelist.erase(somelist.begin()+i);
i--;
|
__________________
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:53.
|