Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2011, 11:26   #11
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от Rififi Посмотреть сообщение
PS. По теме: весь этот велосипед, который ты изобрёл - не нужен. То есть вообще. Полиморфизм и паттерны (например Visitor) рулят.
Действительно. Истинный смысл полиморфизма в том и заключается, что вы не знаете с каким именно объектом работаете, и вам не нужно этого знать
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 19.07.2011, 12:46   #12
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Согласен с вами - не очень хорошая затея. Просто я рассматривал данное решение как одно из возможных и решил узнать о нем подробнее.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 19.07.2011, 19:39   #13
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от Сtrl Посмотреть сообщение
Рассмотрим простой код:
Код:
struct Base abstract {};
struct Derived1:public Base {};
struct Derived2:public Base {};
/*...*/
Base *pObj = 0;
if (/*...*/)
	pObj = new Derived1;
else
	pObj = new Derived2;
Вопрос: как мне теперь определить, на объект какого типа указывает pObj? На объект типа Derived1 или Derived2?
Вы можете в базовом классе объявить виртуальную функцию, как, например, what, которая будет возвращать, например, некоторое значение из перечисления.

Например

Код:
enum class_type { Base, Derived1, Defived2, Defived3 };

inline virtual class_type Base::what() const
{
   return ( Base );
}
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Старый 19.07.2011, 22:42   #14
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Рассматривал такой вариант. Но при добавлении класса придется изменять enum. Но enum клиенту не доступен, а добавить класс он всегда может.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где найти наследника от TreeView с привязкой к набору данных? Greek9000 Общие вопросы .NET 3 18.05.2011 07:57
конструктор наследника абстрактного класса tiger() Visual C++ 5 15.05.2011 07:16
Netbeans редактирование фрейма из класса не наследника Nicko_mt Общие вопросы по Java, Java SE, Kotlin 3 19.04.2011 15:35
[B]Написать наследника компонента. Delphi.[/B] OnCreate Помощь студентам 0 19.10.2010 22:44
Создание наследника ImmortalAlexSan Общие вопросы Delphi 4 29.04.2010 14:19