0 / 0 / 0
Регистрация: 16.09.2018
Сообщений: 5
|
||||||
1 | ||||||
Ссылка на неразрешенный внешний символ, Ошибка средств компоновщика LNK201916.09.2018, 18:54. Показов 3141. Ответов 8
Метки шаблон класса (Все метки)
После параметризации моего класса стали выскакивать ошибки LNK2019 при вызове из main.cpp перегруженных функций +, * и т.д. В чём дело?
Для оператора ввода например так: LNK2019 ссылка на неразрешенный внешний символ "class std::basic_istream<char,struct std::char_traits<char> > & __cdecl operator>>(class std::basic_istream<char,struct std::char_traits<char> > &,class Elements<int> &)" (??5@YAAAV?$basic_istream@DU?$char_traits@D@std@@@std@@AAV01@AAV?$Elements@H@@@Z ) в функции _main
0
|
16.09.2018, 18:54 | |
Ответы с готовыми решениями:
8
Ошибка компоновщика: ссылка на неразрешенный внешний символ Ошибка LNK2019: ссылка на неразрешенный внешний символ Ошибка LNK2019 ссылка на неразрешенный внешний символ Ошибка LNK2019 ссылка на неразрешенный внешний символ |
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
|
||||||
16.09.2018, 19:00 | 3 | |||||
Сообщение было отмечено Iskr как решение
Решение
Перепиши внутри класса вот так:
1
|
0 / 0 / 0
Регистрация: 16.09.2018
Сообщений: 5
|
|
16.09.2018, 19:01 [ТС] | 4 |
всё это в файле Elements.h, мейн находится в main.cpp, Elements.h туда подключила.
Это я про template). Когда сделала template пошли эти ошибки.
0
|
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
|
|
16.09.2018, 19:05 | 5 |
Iskr, суть в том, что нужно каждую дружественную функцию темплейтом объявлять отдельно. Общеклассовый к ним не относится.
Добавлено через 1 минуту Iskr, или делать так: friend ostream& operator<<(ostream &s, const Elements & obj); То есть, убрать <T> из параметров внутри описания класса.
1
|
0 / 0 / 0
Регистрация: 16.09.2018
Сообщений: 5
|
|
16.09.2018, 19:16 [ТС] | 6 |
New man, Спасибо! вроде помогло
Добавлено через 3 минуты New man, подскажите пожалуйста, почему до template с функцией sort не было никаких проблем, а теперь при ее вызове из перегрузок <<, +, например, вылетает Ошибка C3861 Sort: идентификатор не найден Добавлено через 1 минуту New man, поставила перед её определением "template<typename T>"
0
|
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
|
|||||||||||
16.09.2018, 19:26 | 7 | ||||||||||
Сообщение было отмечено Iskr как решение
Решение
Iskr, дело в том, что ты её не совсем правильно написала.
Надо сделать либо так:
1
|
0 / 0 / 0
Регистрация: 16.09.2018
Сообщений: 5
|
|
16.09.2018, 19:31 [ТС] | 8 |
New man, Спасибо! а без template работало, так и должно было быть?
0
|
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
|
||||||
16.09.2018, 19:43 | 9 | |||||
Iskr, суть в том, что template<...> автоматически применяется ко всем обозначениям класса внутри тела класса.
0
|
16.09.2018, 19:43 | |
16.09.2018, 19:43 | |
Помогаю со студенческими работами здесь
9
Ошибка LNK2019 ссылка на неразрешенный внешний символ Ошибка LNK2019 - ссылка на неразрешенный внешний символ Ошибка LNK2019: ссылка на неразрешенный внешний символ Ошибка LNK2019 | Ссылка на неразрешенный внешний символ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |