Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/10: Рейтинг темы: голосов - 10, средняя оценка - 4.80
fom4ik
49 / 7 / 1
Регистрация: 07.11.2010
Сообщений: 52
1

Шаблон класса

06.03.2011, 14:02. Просмотров 1800. Ответов 10
Метки нет (Все метки)

Привет всем!

Решил написать программу с шаблонами. Вот 3 файла:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//tree.h
 
#pragma once
 
template <class T> 
    class tree
{
 
public:
    T * begin;
    tree();//конструктор
    ~tree(){}//деструктор
};
C++
1
2
3
4
5
6
7
8
9
//tree.cpp
 
#include "tree.h"
 
template <class T>
    tree<T>:: tree()//конструктор
{
    begin = 0;
}
C++
1
2
3
4
5
6
7
8
9
//main.cpp
 
#include "tree.h"
 
int main()
{
  tree <int> A;
 
}
Компилировал XCode и Qt в обоих выдает одну ошибку:

ld: symbol(s) not found
collect2: ld returned 1 exit status


Помогите понять в чем тут дело!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2011, 14:02
Ответы с готовыми решениями:

Шаблон родительского класса и шаблон класса потомка
Запутался, как правильно пронаследоваться от шаблона класса? #include...

Шаблоны функций, Ошибка: для использования класса шаблон требуется список аргументов шаблон
Есть у меня 3 структуры Трамвай , Троллейбус , Автобус. Для автобуса определены...

Шаблон класса, параметром которого должны являться наследники определённого класса
Сразу извиняюсь за нубский вопрос. Суть в том, что я хочу сделать шаблон...

Шаблон класса (параметризация класса)
Нужна помощь и советы!!! Англо-русский словарь построен как список. Каждая...

Создать шаблон некоторого класса, возможно, реализованного с применением некоторого серверного класса
Добрый день, Уважаемые профессионалы. Прошу помочь в решении задачи. ...

10
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
06.03.2011, 14:37 2
fom4ik, Весь шаблонный класс вместе с определениями надо описать в заголовочном файле (tree.h) ибо нет экспорта шаблонов.
0
fom4ik
49 / 7 / 1
Регистрация: 07.11.2010
Сообщений: 52
06.03.2011, 14:46  [ТС] 3
ForEveR, дело в том, что я писал шаблон класса список год назад. И делал это как здесь в 3-х файлах. После этого ничего подоного я не писал и что там было не помню
0
Saiberg
19 / 19 / 2
Регистрация: 23.09.2010
Сообщений: 193
06.03.2011, 15:39 4
тоже данный вопрос интересен.

струструп пишет, что нужно делать сл. образом:


C++
1
2
3
4
5
6
//template.h
#pragma once
 
#include <vector>
 
template<class T> void PrintAll(std::vector<T>& forPrint);
C++
1
2
3
4
5
6
7
8
9
10
11
12
//template.cpp
#include "Template.h"
 
export template<class T> void PrintAll(std::vector<T>& forPrint)
{
    for(std::vector<T>::iterator i = forPrint.begin();
        i != forPrint.end();
        i++)
    {
        std::cout << *i << std::endl;
    }
}
но чет не работает = \
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
06.03.2011, 16:03 5
export нереализован в большинстве компиляторов. С++0x вроде как предоставит экспорт шаблонов. А пока пишите в заголовочных файлах весь шаблонный класс.
1
bigredcat
370 / 317 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
06.03.2011, 16:18 6
Цитата Сообщение от fom4ik Посмотреть сообщение
ForEveR, дело в том, что я писал шаблон класса список год назад. И делал это как здесь в 3-х файлах. После этого ничего подоного я не писал и что там было не помню
Каким компилятором пользовались?
0
fom4ik
49 / 7 / 1
Регистрация: 07.11.2010
Сообщений: 52
06.03.2011, 17:19  [ТС] 7
VS 2007(или полее поздняя версия)

Добавлено через 4 минуты
Цитата Сообщение от ForEveR Посмотреть сообщение
export нереализован в большинстве компиляторов. С++0x вроде как предоставит экспорт шаблонов. А пока пишите в заголовочных файлах весь шаблонный класс.
Но если убрать template, то есть написать тоже самое, но не шаблонное то все работает!
0
silent_1991
Эксперт С++
5009 / 3069 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
06.03.2011, 18:10 8
fom4ik, это потому что отсутствует экспорт шаблонов, вам же сказали. Если класс не шаблонный, то экспорт, естественно, будет работать.
1
fom4ik
49 / 7 / 1
Регистрация: 07.11.2010
Сообщений: 52
06.03.2011, 18:13  [ТС] 9
Спасибо
0
bigredcat
370 / 317 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
06.03.2011, 20:13 10
Цитата Сообщение от fom4ik Посмотреть сообщение
VS 2007
В Китае брали
0
alex_x_x
бжни
2455 / 1661 / 134
Регистрация: 14.05.2009
Сообщений: 7,162
06.03.2011, 20:28 11
Цитата Сообщение от fom4ik Посмотреть сообщение
Но если убрать template, то есть написать тоже самое, но не шаблонное то все работает!
это связано с тем, что для обычных типов описание в заголовочном файле полностью определяет тип
для шаблонных это не так - тип появляется только после развертки шаблона, поэтому в шаблонах в общем случае описание неотделимо от реализации
0
06.03.2011, 20:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2011, 20:28

шаблон класса
Спроектировать шаблон класса. В основной программе создать соответствующие...

Шаблон класса c++
#include&lt;iostream&gt; template &lt;class type, type defau&gt; class A { public:...

Шаблон класса
Есть класс телефонный номер - #ifndef NUMBERR_H #define NUMBERR_H class...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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