Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
KEZz
1 / 1 / 0
Регистрация: 13.10.2012
Сообщений: 22
#1

Как организовать класс? - C++

07.11.2012, 11:35. Просмотров 485. Ответов 8
Метки нет (Все метки)

Очень хочу сделать класс который заранее не определён, т.е. имена классов и их количество заранее неизвестно =(

Щас инициализирую и работаю с классом так:
C++
1
2
3
4
ClassA* OBJ = 0;
OBJ = new ClassA();
...
OBJ->Render("OBJ.x");
а Оч хочу шоб типо такого:
C++
1
2
3
4
5
6
7
8
9
10
for (int i=0; i<=obj[100]; i++)
{
ClassA* obj[i];
obj[i] = new ClassA();
}
...
for (int i=0; i<=obj[100]; i++)
{
obj[i] ->Render(objFile[i]);
}
ну имена классов не из цыфр (как я привёл выше), а допустим они предопределены в file.txt в виде массива из буковок=).
Как правильно создать класс?

В книгах подобного ненашёл... но от одного кода найденного на помойке итернета чем то нужным запахло:
C++
1
map<int, ClassA*> m_classList;
только не уверен что мне нужно копать в сторону хаш-мап=\
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2012, 11:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как организовать класс? (C++):

Как организовать добавление в один класс элементов другого в ходе работы программы - C++
есть 2 класса Страна и континент. Подскажите, как организовать добавление страны в список в ходе работы программы (функция CreateCountry). ...

Организовать производный класс - C++
Помогите пожалуйста!!! Организовать производный класс, наследующий все свойства базового и дополнительный методы нахождения скалярного...

организовать класс дробь - C++
Организовать класс дробь, содержащий методы вывода дроби в общепринятом виде и функцию приведения дроби к несократимому виду. Класс должен...

Организовать класс натуральной дроби - C++
Поле first — целое положительное число, числитель; поле second — целое положительное число, знаменатель. Реализовать метод ipart() — ...

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени? - C++
На самом деле ничё фантастического я не прошу, ведь: template &lt;class T&gt; class matrix { friend class diagonal; ...

Организовать на основе существующего класса произвольный класс - C++
осваиваю классы, но пока сложновато. Помогите пожалуйста с заданием: необходимо изменить код программы, организовав на основе существующего...

8
Andrey.K
343 / 264 / 15
Регистрация: 14.11.2010
Сообщений: 482
07.11.2012, 11:40 #2
В .Net знаю есть обобщенные классы, на С++ что-то похожее это Шаблоны. Порой в их сторону.
1
CheshireCat
Эксперт С++
2895 / 1244 / 78
Регистрация: 27.05.2008
Сообщений: 3,397
07.11.2012, 11:42 #3
Задача достаточно типовая. Познакомься с шаблоном проектирования "Фабрика" (Factory).
1
KEZz
1 / 1 / 0
Регистрация: 13.10.2012
Сообщений: 22
08.11.2012, 23:49  [ТС] #4
как оказалось эта задача не типовая, а абсолютно не выполнимая на С++ =(
В шаблонах происходит подмена типов, а в фабрике реалезовано (как я понял) подмена унаследованных классов.

Вот фрагменты из фабрики которые изучал:
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
enum Type
{
    fooType,
    barType,
    maskedType,
    unknownType,
    firstType = fooType,
    lastType = maskedType,
};
...
int main()
{   
    TypeFactory factory;
    factory.add<Foo>(fooType);
    factory.add<Bar>(barType);
    factory.add<MaskedFoo>(maskedType);
    
    checkType(factory, fooType);
    checkType(factory, barType);
    checkType(factory, maskedType);
    checkType(factory, unknownType);
    
    return 0;
}
А я очень хочу создавать объекты классов которые, допустим, в виде массивов имён будут приходить с сервера по сокету или из файла, и заранее я немогу знать какие имена! (enum не катит).

Неужели С++ бессилен? или др. источники меня (разводят).
0
Andrey.K
343 / 264 / 15
Регистрация: 14.11.2010
Сообщений: 482
08.11.2012, 23:51 #5
Тут Enum вполне может подойти. Порой в сторону HashTable или Dictionary.
0
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
08.11.2012, 23:55 #6
похоже автору нужен рефлекшн, который в с++ напрямую не поддерживается. для этого специальные приседания нужны. в куте вот что-то сделали
http://ru.wikipedia.org/wiki/Отражение_(программирование)
1
KEZz
1 / 1 / 0
Регистрация: 13.10.2012
Сообщений: 22
09.11.2012, 00:01  [ТС] #7
а может я вообще зря Классы уродую...
Ведь сама задача: сделать игровую карту (я создаю утопический движок).

Игровая карта Ооочень большая, и разделена на сектора (кот. подгружаются паралельным процессом в зависимости от положения клиента)
Я расчитывал что каждый сегмант игровой карты был бы классом (как контейнер) от которого унаследовались бы др. классы (объекты карты, деревья, камушки), так я расчитывал что новые типы деревьев (по мере моих сил) просто бы в будущем добавлялись бы в проэкт без переписи движка...

Глупый (но оочень мучающий меня) вопрос: как кто организовывает карты (игровые)... шоб вдвигло потом не лезть? Т.к. для загрузки мешей и шейдеров я использую классы (и обекты классов являются например Деревом);
0
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
09.11.2012, 00:10 #8
могу привести аналогию с браузером. браузер умеет показывать то, что скачивает. в большинстве случаев то, что приходит браузеру из сети - это не бинарный код, а некий размеченный текст и данные (картинки, видео и т.п.). браузер интерпретирует размеченный текст и показывает это. в вашем случае нужен движок\браузер\называйте как хотите для карт. на вход ему приходит некоторое описание карты с данными (данные - это текстуры, картинки или хз что еще) и этот движок сам показывает или генерит то, что можно показать на основе этой входной информации.
1
KEZz
1 / 1 / 0
Регистрация: 13.10.2012
Сообщений: 22
09.11.2012, 02:31  [ТС] #9
DU я Вас очень хорошо понял, но отказаться от объектов мне сложно, это надо переобмазговать весь мой проект (каждый объект это: меш, массивы текстур и матриц, массивы скелетной анимации, вершинных и пиксельных шейдеров и прочьих вкусностей охарактеризованных одним названием объекта).

НУ Очень удобно ПИХАТЬ объект в проект с тенями GPSM: Geometry Pitch Shadow Map , который лично у меня ни в какую не сложился после полного переписывания в отдельный модуль (пришлось в Майне оставить).

Пойду посплю...мож осенит=)

Добавлено через 1 час 59 минут
вот чёто нашёл интересненькоеhttp://sergeymakeev.com/?p=328
с блэк-джеком и девочками... то што надо!
0
09.11.2012, 02:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2012, 02:31
Привет! Вот еще темы с ответами:

Организовать класс квадратная матрица. Найти определитель и транспонировать ее - C++
Помогите, пожалуйста! Нужно организовать класс квадратная матрица. Найти определитель и транспонировать ее. С c++ все печально(((

Организовать класс квадратная матрица размерности 3 на 3, содержащий методы - C++
Организовать класс квадратная матрица размерности 3 на 3, содержащий методы: вывода матрицы в общепринятом виде, нахождения...

Организовать класс квадратная матрица размерности 2 на 2, содержащий методы - C++
1) Составить описание класса. 2) В классе предусмотреть не менее трех конструкторов различных типов. 3) Объявить объекты класса и...

Организовать производный класс, содержащий метод нахождения векторного произведения - C++
Возникли сложности при решении задачи. Буду признателен тем, кто поможет. Задание: Изменить программу предыдущего задания, организовав...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru