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

Шаблонные функции только для определённых типов! - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Типизированный файл. Сведения о студентах. Стипендия http://www.cyberforum.ru/cpp-beginners/thread766865.html
Привет) у меня такая задача на туже тему, помогите исправить Вот условие Сформировать типизированный файл, в котором хранятся результаты сессии группы: факультет, группа, семестр, ФИО студента, средняя оценка. Написать программу начисления стипендии по результатам сессии (стипендия = средняя оценка х 50 руб). и текст программы //24. Сформировать типизированный файл, в котором...
C++ F A S M Помогите пожалуйста! Я увлекаюсь программированием, и скачал FASM, как знаете, он открытый проект. Так вот, я хочу изменить этот FASM и выместить в интернете с сcылкой на источник - официальный сайт fasm-a. Можно ли мне это сделать? Ну то есть выместить в интернете? А да ещё, есть вопрос по циклам (и не только. Тaкже интересуют условия - if,else,elseif (как их использовать) и т.д.) Помогите чем... http://www.cyberforum.ru/cpp-beginners/thread766861.html
Си-идентификатор C++
необходимо проверить является ли строка си-идентификатором. какие для этого критерии существуют? 1. первый символ не может быть цифрой 2. любой символ - , , , _ это, что я знаю. вопросы: 1. есть еще длина строки, какой она должна быть, кто говорит до 31, кто еще что-то. вы как думаете? во всех источниках по разному O_O
C++ Времена года и месяцы
Написать программу, которая выводит на экран приглашение: «Введите месяц», вводит с клавиатуры число X, имеющее смысл месяца, и печатает слова «Зима», «Весна», «Лето» или «Осень» в зависимости от введенного месяца. Программа должна реагировать на ввод неправильного месяца: меньше 1 или больше 12. Заранее благодарю. :)
C++ Как представляются двумерные массивы? http://www.cyberforum.ru/cpp-beginners/thread766834.html
Создал двумерный массив. И немного не врубаюсь. Если пиши вот так вот mas выводит 0, если вот так вот mas, то выводит 10. Ну а если вот так вот mas, то выводит 10. Собственно как я понял, что в случае mas мы выходим за границу массива и попадаем на элемент mas. Вопрос: всегда в двумерном массиве именно такая последовательность расположения ячеек памяти для массива, что они идут друг за другом?...
C++ Разработать наследование классов прямоугольный треугольник от треугольник Разработать наследование классов прямоугольный треугольник от треугольник подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
20.01.2013, 16:46     Шаблонные функции только для определённых типов!
Цитата Сообщение от popelyuk Посмотреть сообщение
Я просто думал что определения темплейт функций должны быть всегда в хедерах и никогда в .cpp файлах, иначе что-то будет, а что будет?
Это не религиозная догма. Содержимое шаблонов быть в заголовках, чтобы их можно было инстанциировать: для этого ведь необходимо знать содержимое шаблона. Ведь что такое инстанциация? Берём шаблон void printf<T>(T) (который сам по себе не функция, а только заготовка для создания функций), подставляем туда конкретные типы (ну или константы) и на выходе получаем конкретный тип или конкретную функцию: void print<int>(int). А потом - другую функцию, формально совершенно независимую от первой: void print<double>(double).

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

Так что при определении шаблонов внутри .cpp это "иначе что-то будет" сводится к невозможности инстанциировать шаблоны вне тех .cpp, в которых они объявлены. Что обычно противоречит нашим намерениям, но в данном случае - именно то, что доктор прописал.
 
Текущее время: 00:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru