Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Amadara
10 / 10 / 5
Регистрация: 17.12.2014
Сообщений: 238
#1

Visual c++ шаблон template <typename TT>

30.01.2017, 15:48. Просмотров 850. Ответов 6
Метки нет (Все метки)

пытаюсь разобраться с шаблонами, но выдает ошибку я даже не знаю куда смотреть
https://github.com/Paladin3by/OOP
C++
1
2
3
4
5
6
7
8
9
template <typename TT> class templateList
{
public:
    templateList();
 
    void swap(TT *a, TT *b);
 
    ~templateList();
};

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
 
 
template <typename TT> templateList<TT>::templateList()
{
}
 
template <typename TT> void templateList<TT>::swap(TT *a, TT *b)
{
    std::cout << a << ": " << *a << std::endl;
    std::cout << b << ": " << *b << std::endl;
    TT tmp;
    tmp = *a; //разыменованое значение указателя а
    *a = *b;
    *b = tmp;
    std::cout << a << ": " << *a << std::endl;
    std::cout << b << ": " << *b << std::endl;
}
 
template <typename TT> templateList<TT>::~templateList()
{
}
main
C++
1
2
3
4
5
6
    std::string a1 = "5";
    std::string  b1 = "7";
    
    templateList <std::string> qwe;
 
    qwe.swap(&a1, &b1);


Код
Серьезность	Код	Описание	Проект	Файл	Строка	Состояние подавления
Ошибка	LNK2019	ссылка на неразрешенный внешний символ "public: __cdecl templateList<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >::templateList<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >(void)" (??0?$templateList@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@@QEAA@XZ) в функции main	OOP	C:\Users\shpak\OneDrive\myIPK\03 ООП\OOP\OOP\OOP.obj	1	
Ошибка	LNK2019	ссылка на неразрешенный внешний символ "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl templateList<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >::swap(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)" (?swap@?$templateList@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@@QEAA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAV23@0@Z) в функции main	OOP	C:\Users\shpak\OneDrive\myIPK\03 ООП\OOP\OOP\OOP.obj	1	
Ошибка	LNK2019	ссылка на неразрешенный внешний символ "public: __cdecl templateList<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >::~templateList<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >(void)" (??1?$templateList@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@@QEAA@XZ) в функции main	OOP	C:\Users\shpak\OneDrive\myIPK\03 ООП\OOP\OOP\OOP.obj	1	
Ошибка	LNK1120	неразрешенных внешних элементов: 3	OOP	C:\Users\shpak\OneDrive\myIPK\03 ООП\OOP\x64\Debug\OOP.exe	1

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2017, 15:48
Ответы с готовыми решениями:

В чем различие template <typename T> от template <class T> ?
Добрый день ! Заметил в новых книгах применение записи template &lt;typename T&gt;...

Template<typename T> vs auto
template &lt;typename T&gt; vector&lt;T&gt; my_vec1; vector&lt;auto&gt; my_vec2;Какая разница...

Тип аргумента template<typename .Args>
Нужно выполнить определенный код при определенном типе аргумента Через шаблон...

Использование шаблонов при описании классов template<typename type>
mylist.h template&lt;typename T&gt; class MyList { public: MyList(); ...

Visual Studio выдаёт ошибку при вынесении объявления функции с template в .h файл. Без template всё работает
Проект содержит три файла: Source.cpp, arrTreat.h, arrTreat.cpp. Source.cpp:...

6
Raali
639 / 343 / 74
Регистрация: 06.07.2013
Сообщений: 1,107
Завершенные тесты: 1
30.01.2017, 15:50 #2
Сколько можно повторять, что шаблон нельзя делить на хедер и cpp)
1
Amadara
10 / 10 / 5
Регистрация: 17.12.2014
Сообщений: 238
30.01.2017, 15:51  [ТС] #3
Цитата Сообщение от Raali Посмотреть сообщение
Сколько можно повторять, что шаблон нельзя делить на хедер и cpp)
а?
http://cppstudio.com/post/5188/
я не правильно понял?
0
Raali
639 / 343 / 74
Регистрация: 06.07.2013
Сообщений: 1,107
Завершенные тесты: 1
30.01.2017, 15:55 #4
Лучший ответ Сообщение было отмечено Amadara как решение

Решение

там написано - "Как видите шаблон класса Stack объявлен и определен в файле", значит все сделано в пределах одного файла
1
Amadara
10 / 10 / 5
Регистрация: 17.12.2014
Сообщений: 238
30.01.2017, 15:59  [ТС] #5
Цитата Сообщение от Raali Посмотреть сообщение
там написано - "Как видите шаблон класса Stack объявлен и определен в файле", значит все сделано в пределах одного файла
даже подумать не мог что нельзя разделять
хоть бы на том форуме написали
спасибо
0
Raali
639 / 343 / 74
Регистрация: 06.07.2013
Сообщений: 1,107
Завершенные тесты: 1
30.01.2017, 16:01 #6
Лучший ответ Сообщение было отмечено Amadara как решение

Решение

но лучше не в CPP его описывать как там а в хедере полностью, чтобы реюзать в других местах
1
GbaLog-
Любитель чаепитий
3161 / 1467 / 462
Регистрация: 24.08.2014
Сообщений: 5,190
Записей в блоге: 1
Завершенные тесты: 2
30.01.2017, 17:41 #7
Цитата Сообщение от Raali Посмотреть сообщение
Сколько можно повторять, что шаблон нельзя делить на хедер и cpp)
Вообще-то можно. Просто это связано с рядом трудностей. )))
Подробнее: http://www.cyberforum.ru/post9488987.html
1
30.01.2017, 17:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2017, 17:41

Для чего нужен шаблон <typename T>
Здравствуйте. template &lt;typename T&gt; T CLAMP(const T&amp; value, const T&amp; low,...

Шаблон класса,ошибка TEMPLATE
Вечер добрый,с таким вопросом. Задание: шаблон класса &quot;однонарпавленный...

Исправить ошибку no compiler was found. In order to use a c++ template, you must first install Visual Studio 2017
Unreal Engine Выдаёт ошибку no compile was found. In order to use a c++...


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

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

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