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

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

Войти
Регистрация
Восстановить пароль
 
Mr. Hat
2 / 2 / 0
Регистрация: 17.02.2012
Сообщений: 68
#1

Не понимаю логику обработки кода, разбитого на файлы - C++

29.12.2013, 09:27. Просмотров 219. Ответов 3
Метки нет (Все метки)

Ситуация примерно такая. Есть файл file1.h, в котором объявлена функция:

C++
1
template<class T> T from_string(const std::string& s);
Ее определение находится в файле file2.cpp, который подключен к проекту (в QtCreator), но ни в каких инклудах не фигурирует. Классы из этих двух файлов в других частях проекта (в которые file1.h включен через цепочку инклудов) работают нормально, но если я пытаюсь использовать эту функцию (напрмер, для T = double), компилятор ее не пропускает:

error: undefined reference to 'double from_string<double>(std::string const&)'

Чтобы все работало, приходится в каждом файле, где используется эта функция, писать ее определение:
C++
1
2
3
4
5
6
7
template<class T> T from_string(const std::string& s)
{
    std::istringstream is(s);
    T t;
    if(!(is >> t)) return T();
    return t;
}
Как сделать так, чтобы определение было одно на весь проект?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2013, 09:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не понимаю логику обработки кода, разбитого на файлы (C++):

Определение количества слов и букв, введенных пользователем (не понимаю логику программы) - C++
Помогите понять некоторые действия программы. Необходимо написать программу, подсчитывающую количество слов и количество букв, введённых...

Разобрать логику работы приведенного кода - C++
Здравствуйте, уважаемые! #include &lt;iostream&gt; using namespace std; long brackets_balance (char * str) { long count; for...

Подскажите логику нескольких строк кода - C++
Помогите пожалуйста. Меня интересуют только места где используется указатель. В этой и других функциях: void PrintList(const Student*...

Бинарный поиск через рекурсию: разобрать логику кода - C++
Помогите , уже второй день мучаюсь с алгоритмом бинарного поиска через рекурсию . Не понимаю откуда берутся значения которые мне выдает...

Не понимаю часть кода - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; void main() { int i; int a; for (int i(0); i &lt; 10;...

не понимаю принцип работы кода - C++
Привет ! Помогите понять суть работы кода пожалуйста. for(i=1;i&lt;=10;sum+=i++); Как работает sum+=i++ НЕ ПОНИМАЮ ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Эксперт CЭксперт С++
13228 / 7500 / 845
Регистрация: 27.09.2012
Сообщений: 18,419
Записей в блоге: 3
Завершенные тесты: 1
29.12.2013, 09:31 #2
Цитата Сообщение от Mr. Hat Посмотреть сообщение
Как сделать так, чтобы определение было одно на весь проект?
Реализация шаблона должна быть доступна в месте инстанцирования
0
Mr. Hat
2 / 2 / 0
Регистрация: 17.02.2012
Сообщений: 68
29.12.2013, 09:38  [ТС] #3
Т.е. проблема в том, что это - шаблон? И шаблонные функции вообще нет смысла включать в заголовочные файлы?
0
Croessmah
Эксперт CЭксперт С++
13228 / 7500 / 845
Регистрация: 27.09.2012
Сообщений: 18,419
Записей в блоге: 3
Завершенные тесты: 1
29.12.2013, 09:40 #4
Цитата Сообщение от Mr. Hat Посмотреть сообщение
И шаблонные функции вообще нет смысла включать в заголовочные файлы?
всю реализацию пишите в заголовочном файле.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2013, 09:40
Привет! Вот еще темы с ответами:

Правильно ли я понимаю работу этого кода? - C++
#include &lt;iostream&gt; #include &lt;cctype&gt; using namespace std; int main () { char str1 = &quot;Enter first string&quot;; char str2 =...

не понимаю как открыть исходные файлы - C++
не понимаю как открыть исходные файлы

Есть некоторые строчки кода, которые я не понимаю - C++
Добрый день. У меня есть код программ но есть некоторые строчки кода которые я не понимаю. Помогите разобраться. Как бы что тут...

Работа в Visual Studio 2015 - как добавить файлы исходного кода и заголовочные файлы? - C++
Приветствую всех! Столкнулся с тем, что решая задачи по книге Лафоре про графику, не смог добавить файлы .h и .cpp, скачав их с одной из...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.12.2013, 09:40
Ответ Создать тему
Опции темы

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