Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Willys
0 / 0 / 0
Регистрация: 20.05.2008
Сообщений: 26
#1

Ошибка:unresolved external 'My<int>::My<int>(int)' unresolved external 'My<int>::~My<int>' - C++

17.11.2009, 15:36. Просмотров 752. Ответов 4
Метки нет (Все метки)

есть 3 файла. файл inc.h:
...
template <class T> class My
{
int m_size;
T *m_data;
public:
My(int value);
~My();
...
};

inc.cpp:
#include 'inc.h'

template <class T> My<T>::My(int value)
{
m_size = value; m_data = new T[value];
}

template <class T> My<T>::~My() { delete [] m_data; }

и наконец, main.cpp:
#include 'inc.h'

int main()
{
My<int> x;
}

компилится всё нормально, но линкер ругается:
unresolved external 'My<int>::My<int>(int)'
unresolved external 'My<int>::~My<int>'

использую Borland Free Compiler.
заранее спасибо за помощь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2009, 15:36     Ошибка:unresolved external 'My<int>::My<int>(int)' unresolved external 'My<int>::~My<int>'
Посмотрите здесь:

[Linker Error] Unresolved external 'Sort(int near*near ,int, int) - C++
не могу понять в чем ошибка при компиляции ошибок не выдает при запуске программы - выдает эту ошибку Unresolved external 'Sort(int...

[Linker Error] Unresolved external 'Sort(int, int)' referenced from H:\INFORMATIC\5\UNIT1.OBJ - C++
понять не могу откуда, собственно, ошибка, да что там. Вот код ...

//unresolved external symbol "void_cdecl fun1(int,int)" (&fun1@@YAXHH@Z) referenced in function_main - C++
создал проект, нужно ввести двумерный массив, потом создать функцию которая будет проверять есть ли в массиве хотя бы одна строка,...

Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)' - C++
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #define row 5 #define col 5 using namespace...

[ilink32 Error] Error: Unresolved external 'zamena (int * *) ' referenced - C++
Вот это программа не работает : вот ошибка которую выдает компилятор: Error: Unresolved external 'zamena(int * *)' referenced from...

В каком случае надо начинать с int main() или с int _tmain( int argc, _TCHAR* argv[] ) и т.д.? - C++
Не понимаю, с чего начинать. Заранее спс.

Error: Unresolved external 'character::character(int)' - C++
Error: Unresolved external 'character::character(int)' referenced from C:\USERS\АДМИНИСТРАТОР\DOCUMENTS\RAD...

[Linker error] undefined reference to `sterling(int, int, int)' - C++
#include &lt;iostream&gt; using namespace std; int sterling(int,int,int); int sterling(int,int); int sterling(int); int main() { ...

int main() и int _tmain(int argc, _TCHAR* argv[]) - C++
При создании нового консольного приложения Microsoft Visual С++ 2010 Express создает начальный шаблон #include &quot;stdafx.h&quot; int...

ОШИБКА [Error] cannot convert 'int*' to 'float*' for argument '1' to 'void Syma(float*,int*,int) - C++
Какая то проблема с указателями,незнаю,не хочет щитать суму парних чисел в второй подпрограме.Извиниет за ошибки.Не владею руским.Помогите...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
palva
2561 / 1783 / 251
Регистрация: 08.06.2007
Сообщений: 6,910
Записей в блоге: 4
17.11.2009, 16:42     Ошибка:unresolved external 'My<int>::My<int>(int)' unresolved external 'My<int>::~My<int>' #2
Написать, как он просит

My<T>::My<T>(int value)

My<T>::~My<T>()
Willys
0 / 0 / 0
Регистрация: 20.05.2008
Сообщений: 26
17.11.2009, 16:58  [ТС]     Ошибка:unresolved external 'My<int>::My<int>(int)' unresolved external 'My<int>::~My<int>' #3
так писать нельзя - синтаксическая ошибка. здесь дело в другом. компилятор почему-то не создаёт нормальных экспортов для шаблонов. вот я бы и хотел узнать, как с этим бороться. может опции какие-нибудь хитрые? (хотя вроде всё перепробовал уже).
palva
2561 / 1783 / 251
Регистрация: 08.06.2007
Сообщений: 6,910
Записей в блоге: 4
17.11.2009, 19:28     Ошибка:unresolved external 'My<int>::My<int>(int)' unresolved external 'My<int>::~My<int>' #4
Да, ваша правда. Дело в том, что реализацию шаблонов надо перенести в h-файл. Компилятор компилирует шаблоны только для тех типов, обращения к которым имеются. Поэтому при компиляции inc компиляция шаблонов не происходит - компилятор не знает для каких типов нужно компилировать, а при компиляции main My<int>::My... не компилируется, поскольку отсутствует тело.

Кроме того, нужно добавить конструктор по умолчанию, поскольку он вызывается в программе main, либо вызывать конструктор с целым параметром.
Willys
0 / 0 / 0
Регистрация: 20.05.2008
Сообщений: 26
18.11.2009, 15:37  [ТС]     Ошибка:unresolved external 'My<int>::My<int>(int)' unresolved external 'My<int>::~My<int>' #5
спасибо за помощь!
Yandex
Объявления
18.11.2009, 15:37     Ошибка:unresolved external 'My<int>::My<int>(int)' unresolved external 'My<int>::~My<int>'
Ответ Создать тему
Опции темы

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