0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 2
1

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

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

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

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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.01.2014, 14:14
Ответы с готовыми решениями:

Как в Excel использовать функцию, находящуюся в другой книге?
Ситуация: Открыто несколько Workbooks. 1. Нужно из модуля, расположенного в Workbooks(2)...

Как правильно использовать одну функцию внутри другой?
Доброго времени суток. Функция func1() должна поменять переменную var1 внутри функции func2. &lt;?...

Как написать функцию в ActiveX DLL и как её использовать в другой проге?
Как написать функцию в ActiveX DLL и как её использовать в другой проге, ну допустим как апи:...

Как построить шаблонную функцию?
Добрый вечер! Есть код, который всегда повторяется в дочерних классах: QPushButton *button = new...

3
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
11.01.2014, 14:18 2
экспорт шаблонов - вещь не объезженная.
я вот не скажу чего там и как, ни разу не приходилось использовать.
но, как водится, предлагаю вам обсудить альтернативы
вам дейстиветльно нужен экспорт? какую задачу вы пытаетесь решить с его использованием?
0
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
Вежливость-главное оружие
233 / 234 / 86
Регистрация: 19.02.2013
Сообщений: 1,446
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2014, 17:03
Помогаю со студенческими работами здесь

Как реализовать шаблонную функцию?
Добрый день Хочу реализовать одну функцию получающую значение типа int Есть два варианта получения...

Как правильно написать шаблонную функцию?
Как правильно написать функцию template ? в функции main не работает #include &quot;stdafx.h&quot;...

Как использовать функцию класса в другом классе (ни один из классов не наследует другой)?
функция в классе в котором она прописана объявлена как паблик. void auction::rvectoroldtime(int...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru