С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
136 / 48 / 2
Регистрация: 31.07.2014
Сообщений: 238
1

Переопределение метода класса-шаблона

04.09.2014, 21:57. Показов 4493. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет народ. Есть такой код:
C++
1
2
3
4
5
6
typedef OS::process<OS::pr0, 90> TProc1;
TProc1 Proc1;
template<> void Proc1::exec()
{
    //тут кот
}
Можете объяснить как это работает? А если точнее, зачем при переопределении функции класса proc писать tamplate<>? И, я правильно понимаю - здесь есть класс proc, в нем виртуальный метод exec(). Класс построен на шаблоне - в нем указывается два параметра, в данном случае это приоритет и размер стека. Мы для удобства делаем typedef, чтобы обозвать данный набор параметров, а потом создаем объект класса, которому переопределяем метод exec(). Я всё правильно понимаю?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.09.2014, 21:57
Ответы с готовыми решениями:

Определение метода-шаблона за пределами шаблона класса
День добрый! Разбираюсь в шаблонах, решил копнуть поглубже. Вот пример: template &lt;typename T1&gt;...

Синтаксис определения метода специализии шаблона класса.
Есть некий шаблон класса: template &lt;typename T1, typename T2, typename T3&gt; class А { }; Есть...

Вынос реализации метода шаблона класса в другой файл
Здравствуйте! Допустим, есть класс: // class.hpp #ifndef CLASS_HPP_ #define CLASS_HPP_ ...

Передача метода класса в качестве параметра для метода другого класса
Здравствуйте, Передо мной стоит такая задача. Необходимо разработать механизм, который бы мог...

20
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
06.09.2014, 02:46 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от alsav22 Посмотреть сообщение
Да.
Так оно все равно выключено.
Они не обязательны, я выше говорил про объявление метода в шаблонном классе. При использовании его из другой единицы трансляции с конкретными аргументами мы получим имя, которое потом линкер найдет в другом модуле, в котором мы проводили явную специализацию. Т.к. это уже, считай, обычные функции.
Кстати один из способов (второй это экспорт шаблонов, который почти никто так нормально и не сделал в С++03, а в С++11 он deprecated) все-таки упрятать шаблон в cpp: сделать достаточно таких специализаций, скажем так, в рамках разумного использования. Ну естественно получим разбухание кода, но это я так, разговор поддержать

Добавлено через 6 минут
Цитата Сообщение от alsav22 Посмотреть сообщение
Если было бы вот так написано, это было бы правильно?
Нет. Эта запись сама по себе не делает инстанцирования.

Добавлено через 3 минуты

Не по теме:

Цитата Сообщение от alsav22 Посмотреть сообщение
это от тебя моя мысль ускальзывает
Все, я тебя понял, ты пытался объяснить из-за чего начал дискуссию. :) Я немного сонный уже.



Добавлено через 4 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
template<> OS::process<OS::pr0, 120>::exec();
Как раз для такого рода специализации существует синтаксис, который ты тогда приводил:
C++
1
template void OS::process<OS::pr0, 120>::exec();
И для его работы требуется доступное определение.
1
06.09.2014, 02:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.09.2014, 02:46
Помогаю со студенческими работами здесь

Переопределение виртуального метода
Нужно написать виртуальный метод в родительском классе , который находит площадь круга. Затем...

Наследование. Переопределение метода родителя
не работает конструкция вида: class AllFigureData { protected: int id; int x; int y;...

Вызов метода класса из метода другого класса
Помогите школнегу Имеется несколько классов class Com { protected: unsigned char bufrd,...

Явное создание экземпляра класса и явная специализация шаблона класса
Всем добрый день! Не могу разобраться - эти две технологии дают один и тот же результат? В каких...


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

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