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

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

Войти
Регистрация
Восстановить пароль
 
Paket236
2 / 2 / 0
Регистрация: 16.08.2013
Сообщений: 52
#1

Определение метода-шаблона за пределами шаблона класса - C++

15.09.2013, 14:00. Просмотров 768. Ответов 3
Метки нет (Все метки)

День добрый!
Разбираюсь в шаблонах, решил копнуть поглубже. Вот пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
template <typename T1> class K   // шаблон класса
{
public:
    void func(T1) {}
    template <typename S1> void sh_func(S1);
};
 
template <> class K<double>      // полная специализация шаблона класса
{
public:
    void func(double) {}
    template <typename S1> void sh_func(S1);
};
Возникли вопросы:
1) Можно ли специализировать только метод func() шаблона класса K, не специализируя сам класс? Если да, то как?
2) Как определить шаблон метода sh_func() за пределами шаблона класса K?
3) Как определить шаблон метода sh_func() за пределами полной специализации шаблона класса K?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2013, 14:00     Определение метода-шаблона за пределами шаблона класса
Посмотрите здесь:
C++ определение функции за пределами шаблона класса
Переопределение метода класса-шаблона C++
C++ Синтаксис определения метода специализии шаблона класса.
C++ Вынос реализации метода шаблона класса в другой файл
C++ Определение чистой виртуальной функции класса-шаблона
C++ Можно ли разбивать определение шаблона класса на несколько файлов?
Явное создание экземпляра класса и явная специализация шаблона класса C++
C++ Специализация шаблона класса
C++ Использование шаблона класса
C++ Реализация шаблона класса
C++ Конструктор шаблона класса
Конструктор-копирование шаблона класса C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.09.2013, 14:49     Определение метода-шаблона за пределами шаблона класса #2
Цитата Сообщение от Paket236 Посмотреть сообщение
1) Можно ли специализировать только метод func() шаблона класса K, не специализируя сам класс?
нельзя

Цитата Сообщение от Paket236 Посмотреть сообщение
2) Как определить шаблон метода sh_func() за пределами шаблона класса K?
C++
1
2
3
4
5
template <typename T1> 
template <typename S1> 
void K<T1>::sh_func(S1 s)
{
}
Paket236
2 / 2 / 0
Регистрация: 16.08.2013
Сообщений: 52
15.09.2013, 16:42  [ТС]     Определение метода-шаблона за пределами шаблона класса #3
Цитата Сообщение от Jupiter Посмотреть сообщение
нельзя
Я всё-таки попробовал и у меня получилось вот что:
C++
1
template <> void K<char>::func(char) {}
Компилируется и успешно вызывается:
C++
1
2
K<char> obK;
obK.func('q');
Разве это не то?
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.09.2013, 16:57     Определение метода-шаблона за пределами шаблона класса #4
Цитата Сообщение от Paket236 Посмотреть сообщение
Компилируется и успешно вызывается:
да, я ошибся, можно
Yandex
Объявления
15.09.2013, 16:57     Определение метода-шаблона за пределами шаблона класса
Ответ Создать тему
Опции темы

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