Форум программистов, компьютерный форум CyberForum.ru

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

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

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

07.11.2012, 11:35. Просмотров 462. Ответов 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;
только не уверен что мне нужно копать в сторону хаш-мап=\
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2012, 11:35     Как организовать класс?
Посмотрите здесь:

C++ Как организовать добавление в один класс элементов другого в ходе работы программы
C++ организовать класс дробь
C++ Организовать на основе существующего класса произвольный класс
Организовать производный класс, содержащий функции вычисления сложения и вычитания дробей, исходники есть C++
C++ Организовать производный класс, содержащий функции вычисления деления и умножения дробей
Организовать класс квадратная матрица. Найти определитель и транспонировать ее C++
C++ Организовать класс натуральной дроби
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrey.K
340 / 261 / 15
Регистрация: 14.11.2010
Сообщений: 480
07.11.2012, 11:40     Как организовать класс? #2
В .Net знаю есть обобщенные классы, на С++ что-то похожее это Шаблоны. Порой в их сторону.
CheshireCat
Эксперт С++
2890 / 1239 / 78
Регистрация: 27.05.2008
Сообщений: 3,327
07.11.2012, 11:42     Как организовать класс? #3
Задача достаточно типовая. Познакомься с шаблоном проектирования "Фабрика" (Factory).
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 не катит).

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

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

Глупый (но оочень мучающий меня) вопрос: как кто организовывает карты (игровые)... шоб вдвигло потом не лезть? Т.к. для загрузки мешей и шейдеров я использую классы (и обекты классов являются например Деревом);
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
09.11.2012, 00:10     Как организовать класс? #8
могу привести аналогию с браузером. браузер умеет показывать то, что скачивает. в большинстве случаев то, что приходит браузеру из сети - это не бинарный код, а некий размеченный текст и данные (картинки, видео и т.п.). браузер интерпретирует размеченный текст и показывает это. в вашем случае нужен движок\браузер\называйте как хотите для карт. на вход ему приходит некоторое описание карты с данными (данные - это текстуры, картинки или хз что еще) и этот движок сам показывает или генерит то, что можно показать на основе этой входной информации.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2012, 02:31     Как организовать класс?
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
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
с блэк-джеком и девочками... то што надо!
Yandex
Объявления
09.11.2012, 02:31     Как организовать класс?
Ответ Создать тему
Опции темы

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