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

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

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

Как использовать шаблонную функцию в другой единице трансляции? - C++

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

Как исправить ошибку? Спрашиваем у однокурсников и никто не знает((

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
file1.cpp
 
 
 
export template<typename T>
T twice(T t)
{
    return t+1;
}
 
file2.cpp
 
template<typename T>
T twice(T t);
 
int g(int i)
{
    return twice(i);
}
Добавлено через 2 минуты
Для обычной функции это легко делается а вот как тоже самое сделать но только для шаблонной?

Добавлено через 10 минут
/\ up /\
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2014, 14:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как использовать шаблонную функцию в другой единице трансляции? (C++):

Как построить шаблонную функцию? - C++
Добрый вечер! Есть код, который всегда повторяется в дочерних классах: QPushButton *button = new QPushButton(QIcon(&quot;:/icons/&quot; + icon +...

Как использовать функцию класса в другом классе (ни один из классов не наследует другой)? - C++
функция в классе в котором она прописана объявлена как паблик. void auction::rvectoroldtime(int oldtime1, double low, double high ) { ...

Как правильно написать шаблонную функцию? - C++
Как правильно написать функцию template ? в функции main не работает #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace...

Как вернуть экземпляр класса через шаблонную функцию - C++
Вот программа, два класса и функция main #pragma once class BaseClass { public: BaseClass(); ~BaseClass();

Как прописать шаблонную функцию внутри шаблонного класса? - C++
Как объявить шаблонную функцию/*типа iterator*/ внутри шаблонного класса?

Шаблоны, древовидная сортировка: как правильно передавать тип в шаблонную функцию? - C++
Реализую собственную версию древовидной сортировки на основе шаблонов. Нужно сравнение производить по объект функции. Тип шаблона -...

3
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
11.01.2014, 14:18 #2
экспорт шаблонов - вещь не объезженная.
я вот не скажу чего там и как, ни разу не приходилось использовать.
но, как водится, предлагаю вам обсудить альтернативы
вам дейстиветльно нужен экспорт? какую задачу вы пытаетесь решить с его использованием?
0
export
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 2
11.01.2014, 14:32  [ТС] #3
Альтернативы есть. Можно эту шаблонную функцию поместить в заголовочный файл и потом подключить его.
Но у Страуструпа написано именно так. Эта функция находится в file.cpp
C++
1
2
3
4
5
export template<typename T>
T twice(T t)
{
    return t+1;
}
А в файле file2.cpp можно ее использовать
file2.cpp

C++
1
2
3
4
5
6
7
template<typename T>
T twice(T t);
 
int g(int i)
{
    return twice(i);
}
Но визуал студио показывает ошибку. Вот и хотим понять в чем ошибка.

Добавлено через 1 минуту
Задача пока только одна. Чтобы программа скомпилировалась))

Добавлено через 4 минуты
DU пусть все так остается. Поместим эту функцию в отдельный заголовочный файл и все. Вроде работает.
0
some_name
Вежливость-главное оружие
226 / 224 / 55
Регистрация: 19.02.2013
Сообщений: 1,441
11.01.2014, 17:03 #4
export убрали из с + + standart. Не используйте его.
export темплейтов ДЕПРЕЦИРОВАН, он был реализован только в одном компиляторе и то криво.

Можно так сделать:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// file1.h
 
template <class T> class Math
{
public:
    static T max(T const, T const);
};
 
// file1.cpp
#include "stdafx.h"
#include <iostream>
#include "file1.h"
 
template Math<int>; 
template Math<double>;
template<class T> T Math<T>::max(T const a, T const b)
{
    return a > b ? a : b;
};
 
 
void main() 
{
    std::cout<<Math<int>::max(2, 3)<<std::endl;
    std::cout<<Math<int>::max(12.7, 3.1)<<std::endl;
    getchar();
    getchar();
}
0
11.01.2014, 17:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2014, 17:03
Привет! Вот еще темы с ответами:

Написать шаблонную функцию, принимающую три параметра и возвращающую их среднее арифметическое как float - C++
Функция f6, которая принимает три аргумента определенного типа (int, double или/ char) и возвращает среднее арифметическое типа float....

Передача указателя на шаблонную функцию в другую функцию - C++
Пишу тест для нескольких улучшений квиксорта с измерением времени. Функция benchmark принимает итераторы для диапазона элементов, указатель...

Написать шаблонную функцию - C++
Здравстсвуйте,нужно переделать функцию под шаблонную.Я вроде как сделал,но компилятор ругается.Работаю в Rad Xe2. Вот код #pragma...

Std::function на шаблонную функцию - C++
Здравствуйте :) Делаю такую вещь: template &lt;typename T1, typename T2&gt; typename std::common_type&lt;T1,T2&gt;::type func(T1 val1, T2 val2) ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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