Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 2

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

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

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Помогите пожалуйста!
Компоновщик выдаёт ошибку 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.07.2016, 13:15
Ответы с готовыми решениями:

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

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

Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ
Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ &quot;public: void __thiscall EDeque&lt;int&gt;::push_front(int const &amp;)&quot;...

3
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
06.07.2016, 13:22
Код шаблона должен быть доступен в месте инстанцирования.
Перенесите реализацию operator<< в заголовок met.h
2
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 2
06.07.2016, 13:35  [ТС]
Спасибо!
То есть реализация шаблонных классов и функций всегда должна быть включена в файл из которого эта функция вызывается или в котором создается объект класса?
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
06.07.2016, 13:49
Цитата Сообщение от drotenberg Посмотреть сообщение
То есть реализация шаблонных классов и функций всегда должна быть включена в файл из которого эта функция вызывается или в котором создается объект класса?
Посмотрите соседнюю тему: Ошибка LNK 2019 - C++ (Visual Studio 2011)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.07.2016, 13:49
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru