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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
wilful
Сообщений: n/a
#1

Ошибка при компиляции undefined reference to `List<int>::List()'| - C++

07.06.2011, 10:41. Просмотров 2197. Ответов 4
Метки нет (Все метки)

Доброго времени суток=) столкнулась с такой проблемой нужно написать шаблон класса. При компиляции выдает ошибку undefined reference to `List<int>::List()'. причем если перенести реализацию конструктора и деструктора в заголовочный файл то ошибка уходит, возможно я где то косячу с объявлениями вот исходник:
main.cpp


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include "list.h"
 
using namespace std;
 
int main()
{
    List<int> x;
    return 0;
}
 
 
list.cpp:
 
#include <iostream>
#include "list.h"
using namespace std;
 
template <typename var_type> List<var_type>::List(){
cout<<"Constructor!"<<endl;
}
 
template <typename var_type> List<var_type>::~List(){
cout<<"AntiConstructor!"<<endl;
}
list.h:
#ifndef _LIST_H
#define _LIST_H
#include <iostream>
using namespace std;
 
template <typename  var_type>
class List
{
public:
     List();
    ~List();
};
 
 
#endif
 Комментарий модератора 
Используйте теги форматирования кода!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2011, 10:41     Ошибка при компиляции undefined reference to `List<int>::List()'|
Посмотрите здесь:

[Linker error] undefined reference to `sterling(int, int, int)' C++
Ошибка при компиляции: "List index out of bounds (0)" C++
Выдается ошибка при компиляции (error C2447: missing function header (old-style formal list?)) C++
Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)' C++
C++ Сортировка std::list ошибка компиляции algorithm 3868 error C2784
Undefined reference to Change_Array(int, int) C++
При компиляции Dev-C ошибки: undefined reference to C++
C++ Ошибка компиляции единого файла: undefined reference to `vtable for .'
PostgreSQL и CLion, ошибка при компиляции undefined reference C++
Ошибка: error: cannot convert '<brace-enclosed initializer list>' to 'int C++
Ошибка компиляции undefined reference to `Polygon::Polygon(Point const*, int)' C++
Ошибка [Linker error] undefined reference to `Vector::Vector(int)' C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
07.06.2011, 11:00     Ошибка при компиляции undefined reference to `List<int>::List()'| #2
с шаблонами всё в заголовочный фаил надо кидать
wilful
Сообщений: n/a
07.06.2011, 15:30     Ошибка при компиляции undefined reference to `List<int>::List()'| #3
Цитата Сообщение от pito211 Посмотреть сообщение
с шаблонами всё в заголовочный фаил надо кидать
а нельзя никак обойтись без такого способа, потому как в заголовочный включать реализацию как-то не очень =)
grizlik78
Эксперт С++
 Аватар для grizlik78
1891 / 1423 / 104
Регистрация: 29.05.2011
Сообщений: 2,978
07.06.2011, 15:33     Ошибка при компиляции undefined reference to `List<int>::List()'| #4
Для нелокальных шаблонных классов нет другого места, кроме заголовка. Более того, при описании функций за пределами описания класса эти функции стоит объявить как inline.
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17188 / 5442 / 337
Регистрация: 30.03.2009
Сообщений: 14,754
Записей в блоге: 26
07.06.2011, 17:24     Ошибка при компиляции undefined reference to `List<int>::List()'| #5
Цитата Сообщение от wilful Посмотреть сообщение
а нельзя никак обойтись без такого способа, потому как в заголовочный включать реализацию как-то не очень =)
Нельзя, ибо шаблон по своей природе - этот то же самый макрос, только более продвинутый. Потому что компилятор должен всегда видеть тело шаблона, чтобы уметь подставить в него нужный тип (ну или типы или константы в общем случае)
Yandex
Объявления
07.06.2011, 17:24     Ошибка при компиляции undefined reference to `List<int>::List()'|
Ответ Создать тему
Опции темы

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