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

Ошибка error LNK2019: ссылка на неразрешенный внешний символ

06.07.2016, 13:15. Показов 1454. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Помогите пожалуйста!
Компоновщик выдаёт ошибку error LNK2019: ссылка на неразрешенный внешний символ "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<<class std::basic_ostream<char,struct std::char_traits<char> > >(class std::basic_ostream<char,struct std::char_traits<char> > &,class A)" (??$?6V?$basic_ostream@DU?$char_traits@D@std@@@std@@@@YAAAV?$basic_ostream@DU?$c har_traits@D@std@@@std@@AAV01@VA@@@Z) в функции _main
В проекте три файла:

met.h
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
using namespace std;
class A
{
public:
    A(int i);
        int a;
};
template <class T_stream> T_stream &operator << (T_stream &stream, A a);
met.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "met.h"
 
    A:: A(int i)
    {
        a = i;
    }
    
template <class T_stream> T_stream &operator << (T_stream &stream, A a)
{
    stream << "a=" << a.a;
    return stream;
}
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
#include "met.h"
 
 
int main()
{
    setlocale(0, "Russian"); 
    A s(1);
    cout << s;
    system("pause");
    return 0;
}
Если всё это записать в одном файле, то создается exe файл и программа запускается и все работает.
Также все работает, если убрать шаблон из операторной функции.
Не могу понять в чем дело?
Заранее благодарен.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.07.2016, 13:15
Ответы с готовыми решениями:

Ошибка: error LNK2019: ссылка на неразрешенный внешний символ...
Не могу понять ошибку в своей программе! Ничего красным не подчёркивается, но программа не...

Ошибка error LNK2019: ссылка на неразрешенный внешний символ
Здравствуйте, не уверен в эту ли тему пишу, но в теме специализированой по OpenGL мне ни кто ничего...

Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ
Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ &quot;public: void __thiscall...

Ошибка линковки - error LNK2019: ссылка на неразрешенный внешний символ
Что может быть не так? есть файл test.h #ifndef _T_ #define _T_ template&lt;class T&gt; class...

3
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
06.07.2016, 13:22 2
Код шаблона должен быть доступен в месте инстанцирования.
Перенесите реализацию operator<< в заголовок met.h
2
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 2
06.07.2016, 13:35  [ТС] 3
Спасибо!
То есть реализация шаблонных классов и функций всегда должна быть включена в файл из которого эта функция вызывается или в котором создается объект класса?
0
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
06.07.2016, 13:49 4
Цитата Сообщение от drotenberg Посмотреть сообщение
То есть реализация шаблонных классов и функций всегда должна быть включена в файл из которого эта функция вызывается или в котором создается объект класса?
Посмотрите соседнюю тему: Ошибка LNK 2019 - C++ (Visual Studio 2011)
0
06.07.2016, 13:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.07.2016, 13:49
Помогаю со студенческими работами здесь

Переопределение операции. Ошибка Error LNK2019: ссылка на неразрешенный внешний символ
Возникает такая ошибка: 1 error LNK2019: ссылка на неразрешенный внешний символ &quot;public: class...

Ошибка при написании класса: error LNK2019: ссылка на неразрешенный внешний символ
Код: int _tmain(int argc, _TCHAR* argv) { Fraction x, x2, y, y2, fl, res, c; cout &lt;&lt;...

Не могу разобраться где ошибка!error LNK2019: ссылка на неразрешенный внешний символ
#include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include &quot;stdio.h&quot; #include &quot;stdlib.h&quot; #include...

Ошибка линковщика(error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup)
#include &lt;iostream&gt; using namespace std; void rotor(int *a,int k,int len) { // Создаем и...


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

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

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