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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
fom4ik
49 / 7 / 1
Регистрация: 07.11.2010
Сообщений: 52
#1

Шаблон класса - C++

06.03.2011, 14:02. Просмотров 1717. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шаблон класса (C++):

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

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

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

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

шаблон класса - C++
Подскажите, пожалуйста, как правильно реализовать метод print(), чтобы можно было выводить разные типы данных, например, можно было...

Шаблон класса с++ - C++
StakNode.h #ifndef _STACKNODE_H_ #define _STACKNODE_H_ #include &lt;string&gt; template&lt;class T&gt; class Stack { ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,542
Завершенные тесты: 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 / 1
Регистрация: 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
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,542
Завершенные тесты: 3
06.03.2011, 16:03 #5
export нереализован в большинстве компиляторов. С++0x вроде как предоставит экспорт шаблонов. А пока пишите в заголовочных файлах весь шаблонный класс.
1
bigredcat
365 / 312 / 3
Регистрация: 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
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 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
365 / 312 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
06.03.2011, 20:13 #10
Цитата Сообщение от fom4ik Посмотреть сообщение
VS 2007
В Китае брали
0
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
06.03.2011, 20:28 #11
Цитата Сообщение от fom4ik Посмотреть сообщение
Но если убрать template, то есть написать тоже самое, но не шаблонное то все работает!
это связано с тем, что для обычных типов описание в заголовочном файле полностью определяет тип
для шаблонных это не так - тип появляется только после развертки шаблона, поэтому в шаблонах в общем случае описание неотделимо от реализации
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2011, 20:28
Привет! Вот еще темы с ответами:

Шаблон класса. - C++
Приведите пожалуйста пример какого нибудь простого класса с меню. Чтобы пользователь сам вводил, а не компьютер заполнял.

шаблон класса - C++
компилятор с линковщиком выдают такие ошибки 1&gt;main.obj : error LNK2019: ссылка на неразрешенный внешний символ &quot;public: __thiscall...

Шаблон класса - C++
Здраствуйте! Разрабатываю динамический массив. Необходимо реализовать, а не знаю как..не хватает опыта... короче: есть шаблон класса. В...

Шаблон класса - C++
Столкнулся со следующей проблемой. Приведенный ниже шаблон класса коректно компилируется и работает пока находится в одном срр-шном файле...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.03.2011, 20:28
Ответ Создать тему
Опции темы

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