Есть некий шаблон класса:
//test.h
template<class any>
class test
{
public:
void foo(any);
//...
};
//test.cpp
#inlcude "test.h"
template<class any>
test<any>::foo(any item)
{
//...
}
Далее (в ф-ии main) идет обращение к методу:
test<int> t;
t.foo(2);
Выдаются 2 ошибки компоновщика:
"Error 1 error LNK2019: unresolved external symbol "public: void __thiscall test<int>::foo(int)" (?foo@?$test@H@@QAEXH@Z) referenced in function _wmain"
"Error 2 fatal error LNK1120: 1 unresolved externals"
Помогите разобраться. Информацию в MSDN по данной ошибке читал...
Примечание:
VS 2008
Примечание:
katzyn, перенес - все тоже самое
Примечание:
Ах... у меня оказывается еще один подобный метод в cpp файле реализован... нукась :)
Примечание:
Так... перенес реализацию подобных методов в хедер... вроде бы работает.
Эх, гемор :). И некрасиво это как-то держать реализацию в хедэре :)
Примечание:
Это единственное решение проблемы. Только так и не иначе?
Примечание:
template<class any>
test<any>::foo(any item)
это я опечатался :)
там
template<class any>
void test<any>::foo(any item)
Примечание:
Да и я вообще сначала подумал, что я может когда с конфигурацией компоновщика намудрил... Однако пробовал компилить в билдере, dev-c++ и там все тоже самое. Видимо дейстивтельно реализацию методов шаблона класса нужно писать в одном модуле...
Примечание:
Black, спасибо, жди письма :)
Примечание:
Странно... у меня было сделано все точно также, как и у Вас
попробую поковырять (хотя перенос реализаций в хедер решило проблему... но надо все равно разобраться до конца).
Примечание:
Заметил, что у Вас в проекте в настройках компоновщика во вкладке "advanced" пара настроек изменены... я поставил у себя такие же - не помогло.
Проект смотрел-пересматривал по 10 раз... даже и не знаю, к чему придраться :). Завтра попробую собрать заного.
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.