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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.09.2011, 17:32   #1
Bubaleh
Пользователь
 
Регистрация: 08.09.2011
Сообщений: 18
Вопрос Специализация шаблона

День добрый,товарищи программисты!!!
Вопрос такой: как специализировать шаблон так,чтобы в качестве аргументов он принимал данные типов,производных от определенного базового класса.
Наглядно эту задачу можно представить так:шаблон класса,который принимает элементы любого типа,производного от класса MyBase(к примеру)!
Заранее спасибо
Bubaleh вне форума Ответить с цитированием
Старый 08.09.2011, 17:41   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Передавайте указатель на базовый в качестве параметра.

П.С. Концептов пока нет.
p51x вне форума Ответить с цитированием
Старый 08.09.2011, 18:01   #3
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

1) Зачем тогда концепты, если есть указатели на базовый класс?
2) Где почитать про концепты? Видел однажды упоминание на Хабре, но другой инфы не нашёл.
ds.Dante вне форума Ответить с цитированием
Старый 08.09.2011, 18:46   #4
Bubaleh
Пользователь
 
Регистрация: 08.09.2011
Сообщений: 18
По умолчанию

Т.е. сделать такую специализацию:
template<> class A<MyBase*>?

Но если,например,DMyBase производный класс от MyBase, тогда A<MyBase*> и A<DMyBase*> будут считаться разными множествами...
Или я не в том направлении мыслю?!
Bubaleh вне форума Ответить с цитированием
Старый 08.09.2011, 20:55   #5
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Bubaleh

Вопрос такой: как специализировать шаблон так,чтобы в качестве аргументов он принимал данные типов,производных от определенного базового класса.

Никакой специализации для этого не нужно.

boost::is_base_of / boost::is_base_and_derived + static_assert. Если второе не поддерживается компилятором, тогда BOOST_MPL_ASSERT
Rififi вне форума Ответить с цитированием
Старый 09.09.2011, 12:01   #6
Bubaleh
Пользователь
 
Регистрация: 08.09.2011
Сообщений: 18
По умолчанию

Я просто думал,что такая возможность все-таки как-то была предусмотрена средствами самого языка!
Недаром же у Страуструпа даже задача такая есть (в принципе,из-за нее-то вопрос и возник):
"Напишите шаблон класса односвязного списка, который принимает элементы любого типа, производного от класса Link, имеющего всю информацию, необходимую для связывания элементов..."
Bubaleh вне форума Ответить с цитированием
Старый 09.09.2011, 12:01   #7
Bubaleh
Пользователь
 
Регистрация: 08.09.2011
Сообщений: 18
По умолчанию

Я просто думал,что такая возможность все-таки как-то была предусмотрена средствами самого языка!
Недаром же у Страуструпа даже задача такая есть (в принципе,из-за нее-то вопрос и возник):
"Напишите шаблон класса односвязного списка, который принимает элементы любого типа, производного от класса Link, имеющего всю информацию, необходимую для связывания элементов..."
Bubaleh вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
копирование шаблона Serg68super Microsoft Office Word 2 10.08.2011 17:07
Шаблоны класса и специализация РагнаР Общие вопросы C/C++ 9 13.03.2011 19:29
Проблема шаблона в IE Cvieri HTML и CSS 9 08.07.2009 18:21
C++ Специализация шаблона opensuse2008 Помощь студентам 7 07.06.2009 18:00