134 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,830
|
||||||||||||||||
1 | ||||||||||||||||
Шаблонная функция в отдельном cpp25.02.2020, 20:04. Показов 3986. Ответов 5
Метки нет (Все метки)
Здравствуйте,
Подскажите пожалуйста, вот когда обьявляю шаблонную функцию внутри main.cpp:
Есть какие то правила обеления шаблонной функции в отдельных файлах относительно обычных функций ?
0
|
25.02.2020, 20:04 | |
Ответы с готовыми решениями:
5
Шаблонная функция: в файле .h или .cpp Глобальная переменная и функция в отдельном cpp Обращение к статическому массиву в отдельном cpp Сделать недоступной функцию в отдельном .cpp модуле |
369 / 310 / 65
Регистрация: 14.10.2014
Сообщений: 1,318
|
|
25.02.2020, 20:11 | 2 |
Сообщение было отмечено Optimus11 как решение
Решение
Optimus11, шаблонная функция должна быть полностью в .h файле. Их не надо разделать на объявление в (.h файле) и определение (в .cpp файле).
Добавлено через 3 минуты или же можно использовать только в конкретном .cpp файле, если нужна "локальная" шаблонная функция. Но она за пределами этого файла, естественно, видна не будет. Для примера - шаблоны STL целиком и полностью состоят из заголовочных файлов, поэтому они доступны для просмотра.
1
|
134 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,830
|
|
25.02.2020, 20:46 [ТС] | 3 |
Спасибо!
Но почему так ? Почему определение обычной функцию в .h файле определить нельзя, а шаблонной можно ?
0
|
194 / 151 / 44
Регистрация: 11.11.2019
Сообщений: 345
|
|
25.02.2020, 20:50 | 4 |
Чуть подробнее: http://www.cyberforum.ru/cpp-b... 84270.html
1
|
369 / 310 / 65
Регистрация: 14.10.2014
Сообщений: 1,318
|
|
25.02.2020, 21:14 | 5 |
Потому что компилятор должен знать о функции всё (типы переменных и их количество) чтобы скомпилировать код.
Поскольку подстановка шаблона происходит на этапе компиляции - текст всего шаблона (как объявление так и определение) должен быть доступен на стадии компиляции. С обычными функциями - можно откомпилировать отдельно вызовы функций, а потом на стадии линковки "подключатся их определения". Как то так Обычную функцию тоже можно целиком отправить в .h файл. Например функции объявленные и определённые прям в теле класса в заголовочном файле - по умолчанию inline (встроенные). "Встроит" их компилятор или нет - это уже другой вопрос. Все решает "архитектура" приложения.
1
|
Неэпический
|
|
25.02.2020, 21:28 | 6 |
1
|
25.02.2020, 21:28 | |
25.02.2020, 21:28 | |
Помогаю со студенческими работами здесь
6
Описание функции шаблонного класса библиотеки в отдельном cpp-файле Шаблонная функция шаблонная функция С++ Шаблонная функция Шаблонная функция С++ Шаблонная функция Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |