Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 04.08.2011, 10:20   #1
Vadimich
Нуждающийся
 
Аватар для Vadimich
 
Регистрация: 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
Morganolla
Бывалый
 
Аватар для Morganolla
 
Регистрация: 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
Vadimich
Нуждающийся
 
Аватар для Vadimich
 
Регистрация: 26.08.2010
Сообщений: 54
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: С++ и Блитц Параллели

Дело в том, что учебник я ещё не дочитал. про то что есть new и delete мне известно.. видел, как они подсвечиваются при вводе.. мне интересно, как их использовать в данном случае. может напишешь небольшой примерчик?
массив объектов в данном случае не то... он ведь сразу создает определенное количество экземпляров, а не добавляет новые по необходимости (если я правильно понял эту часть)
(Offline)
 
Ответить с цитированием
Старый 04.08.2011, 10:44   #4
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 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), impersonalis (04.08.2011), pepel (11.08.2011), St_AnGer (04.08.2011), Vadimich (04.08.2011)
Старый 04.08.2011, 10:49   #5
Vadimich
Нуждающийся
 
Аватар для Vadimich
 
Регистрация: 26.08.2010
Сообщений: 54
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: С++ и Блитц Параллели

2 SBJoker: большое спасибо!
(Offline)
 
Ответить с цитированием
Старый 04.08.2011, 12:31   #6
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: С++ и Блитц Параллели

Согласен с ДЖокером, от себя ещё добавлю:
В данном случае, не помешает изобрести пару велосипедов. Это позволит понять необходимость и рациональность тех или иных решений в готовых библиотеках.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Vadimich (04.08.2011)
Старый 04.08.2011, 19:47   #7
Morganolla
Бывалый
 
Аватар для Morganolla
 
Регистрация: 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
Черный крыс
 
Сообщений: n/a
Ответ: С++ и Блитц Параллели

Лучше познай как устроен БМакса, с него прыгнуть будет проще
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Reizel (07.08.2011)
Старый 08.08.2011, 12:23   #9
Vadimich
Нуждающийся
 
Аватар для Vadimich
 
Регистрация: 26.08.2010
Сообщений: 54
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: С++ и Блитц Параллели

конечно надо понять, как работает какой-то код, перед его бездумным использованием... у меня руководство для чайника.. Стефана Дэвиса.. я подозреваю, что он уже устарел, но думаю, что полезно будет сначала проглотить это... а после, усвоив базу, переходить к следующим.
(Offline)
 
Ответить с цитированием
Старый 09.08.2011, 00:07   #10
HolyDel
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Reizel (10.08.2011)
Старый 09.08.2011, 01:03   #11
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: С++ и Блитц Параллели

Ты уже на C++0x пишешь?
__________________

(Offline)
 
Ответить с цитированием
Старый 09.08.2011, 13:23   #12
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: С++ и Блитц Параллели


мой любимый цикл:
никогда не запомню эту мутотень с итераторами.
по мне так for(int i=0;i<somelist.size();i++) куда интуитивнее.
(Offline)
 
Ответить с цитированием
Старый 09.08.2011, 13:26   #13
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: С++ и Блитц Параллели

Сообщение от Mr_F_ Посмотреть сообщение
никогда не запомню эту мутотень с итераторами.
по мне так for(int i=0;i<somelist.size();i++) куда интуитивнее.
Желаю удачи в удалении какого-то элемента из середины списка в таком цикле.
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Reizel (10.08.2011)
Старый 09.08.2011, 13:49   #14
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: С++ и Блитц Параллели


Желаю удачи в удалении какого-то элемента из середины списка в таком цикле.
somelist.erase(somelist.begin()+i);
i--;
(Offline)
 
Ответить с цитированием
Старый 09.08.2011, 13:54   #15
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: С++ и Блитц Параллели

Сообщение от Mr_F_ Посмотреть сообщение

somelist.erase(somelist.begin()+i);
i--;

__________________

(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
falcon (09.08.2011), Randomize (09.08.2011), Reizel (10.08.2011)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 18:36.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com