С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/12: Рейтинг темы: голосов - 12, средняя оценка - 4.50
12 / 1 / 1
Регистрация: 08.11.2008
Сообщений: 41
1

Фабрика обьектов и названия классов

27.08.2010, 00:53. Показов 2369. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вопрос следующий: как можно получить название класса в виде строки, ну или как вариант превратить параметр шаблона(которым и будет этот класс) в строку? Дело в том что я пытаюсь реализовать шаблон *фабрика обьектов*, то есть я регистрирую классы в фабрике и сопоставляю их с некоторыми строковыми значениями и хотел бы чтобы при написании новых классов не нужно было описывать некоторую функцию для получения текстовой константы-названия, а что бы фабрика сама определяла это текствое значение.

Я придумал что-то похожее на решение, но оно уж слишком смешно выглядит(Просьба не смеяться))) :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
#define FACTORY_CLASS(C) class C { public: char* GetName() { return #C; } private: 
#define END_CLASS };
 
FACTORY_CLASS(MyClass)
public:
    int someData;
END_CLASS
 
int main()
{
    MyClass c;
    std::cout << c.GetName();
}
Через typeid решить не выйдет потому что я не хочу создавать обьект класса попусту. Возможно существует действительно правильный вариант?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.08.2010, 00:53
Ответы с готовыми решениями:

Как получить названия классов, используя libxml2
Есть такой html код &lt;tr class=&quot;tr-odd &quot;&gt; &lt;td class=&quot;td-npair&quot;&gt;6&lt;/td&gt; ...

Как в Visual Studio сделать так, чтобы названия классов выделялись другим цветом
Как в Visual Studio 2010 (язык с++) сделать так, чтобы названия классов выделялись другим цветом...

Фабрика классов
Всем привет. Изучая COM, набрел на фабрику классов. Я так понял, что фабрика классов, это...

Фабрика классов: ковариантные возвращаемые типы не поддерживаются в управляемых типах
Добрый день. Имеются 2 интерфейса: 1. IEmployeeAbstractFactory - представляет фабрику;...

5
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
27.08.2010, 01:31 2
sergio1, А как насчет наследования? Базовый класс с функцией определения имени, от него наследники, функцию можно вызывать через любой производный класс
0
12 / 1 / 1
Регистрация: 08.11.2008
Сообщений: 41
27.08.2010, 01:50  [ТС] 3
Цитата Сообщение от Lavroff Посмотреть сообщение
функцию можно вызывать через любой производный класс
И если забыть переопределить эту функцию то начнутся проблемы с совпадением имен, но при этом может быть не сразу ясно что ошибка именно в отсутсвии переопределения. Я бы именно хотел чтобы эта функция создалась сама
0
270 / 176 / 46
Регистрация: 12.03.2010
Сообщений: 494
27.08.2010, 01:53 4
Если на этапе компиляции определять тип, то typeid. Если рантайм тебе такое сделать нужно, то можно использовать MFC CRuntimeClass (Через него и класс определить можно и динамически создать экземпляр)
1
Эксперт С++
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
27.08.2010, 01:54 5
sergio1, покажите метод фабрики, отвечающий за создание объектов (объявление), а также метод регистрации.
0
12 / 1 / 1
Регистрация: 08.11.2008
Сообщений: 41
27.08.2010, 02:26  [ТС] 6
Цитата Сообщение от Manjak Посмотреть сообщение
Если на этапе компиляции определять тип, то typeid.
А я что-то и не подумал что он не только для обьектов работает, а и для классов, спасибо что напомнили.

Вопрос решен, тему можно закрывать.
0
27.08.2010, 02:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.08.2010, 02:26
Помогаю со студенческими работами здесь

Функции обьектов и классов
Подскажите пожалуйста, можно ли, и если можно, то как описать функцию, которую может вызвать класс,...

Синтаксис классов и обьектов
Всем привет, занимаюсь созданием программы работы с векторами, дак вот, как правильно написать...

Хранение в контейнере обьектов разных классов
Здраствуйте. Есть небольшая иерархия классов, в вершине которой стоит абстрактный класс vehicle, а...

Массив обьектов из нескольких классов! Как реализовать?
Столкнулся с заданием, в котором надо сделать массив обьектов из нескольких классов, я так...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru