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

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

Войти
Регистрация
Восстановить пароль
 
SalterOk
115 / 112 / 1
Регистрация: 02.06.2011
Сообщений: 280
#1

Конструкторы template класса - C++

10.09.2011, 20:44. Просмотров 850. Ответов 6
Метки нет (Все метки)

задача собственно написать класс, который создает массив произвольного типа и хранит указатель на него(это в упрощенном варианте) - вроде просто а уже споткнулся
заголовок класса:
C++
1
2
3
4
5
6
7
8
template<class T>
class DMDM
{
public:
    DMDM(void);
    DMDM(int);
    T *temp;
};
реализация:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "DMDM.h"
 
template<class T>
DMDM<T>::DMDM(void)
{
    //this->type = T;
}
 
template<class T>
DMDM<T>::DMDM(int sz) 
{
    //this->type = T;
    this->temp = &T[sz];
}
вот как использую:
C++
1
2
3
4
#include "DMDM.h"
void main() {
    DMDM<int> s(4);
}
и тут ошибка
error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall DMDM<int>::DMDM<int>(int)"
почему так происходит(желательно объяснить) и как исправить?

P.S. многое удалено чтобы упростить код - поетому не обращайте внимание на коментарии
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2011, 20:44     Конструкторы template класса
Посмотрите здесь:

Конструкторы класса в С++ - C++
В классе я объявил два конструктора: Node( int Depth = 0, string FunctionName = &quot;NULL&quot;, double TimerTime = 0.0 ) : id( Depth,...

Шаблон класса,ошибка TEMPLATE - C++
Вечер добрый,с таким вопросом. Задание: шаблон класса &quot;однонарпавленный линейный список&quot;. И использовать его при составлении программы,...

Метод класса возвращает template type - C++
надо создать метод который возвращает значение privat переменных разных типов. например я прикинул простинькую програмку: class...

Не получается создать template для класса - C++
Здравствуйте, делаю все, как написано в Интернете, а у меня вылетает ошибка runtime - unresolved externals. Не могу создать правильно...

Конструкторы класса Time - C++
Есть вот такая вот прога (см. ниже). По заданию нужно было определить функции, которые читают время из потока ввода, выводят время....

Методы и конструкторы класса - C++
Добрый день) Предположим, имеется некоторый класс &quot;Tfunction&quot; представляющий математическую функцию. Интерфейс этого класса хотелось...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,224
Записей в блоге: 1
Завершенные тесты: 1
10.09.2011, 20:51     Конструкторы template класса #2
Потому что реализацию шаблонов нужно держать в файле с описанием шаблона, т.е. в твоем случае в DMDM.h.
SalterOk
115 / 112 / 1
Регистрация: 02.06.2011
Сообщений: 280
10.09.2011, 21:01  [ТС]     Конструкторы template класса #3
Цитата Сообщение от Kastaneda Посмотреть сообщение
Потому что реализацию шаблонов нужно держать в файле с описанием шаблона, т.е. в твоем случае в DMDM.h.
вроде помогло - вот только не очень удобно
еще интересно какая причина такого ограничения?
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
10.09.2011, 21:48     Конструкторы template класса #4
SalterOk, причина в том, что реализация экспорта шаблонов (как выяснилось в ходе её попыток) настолько нетривиальна, что решили, что она не стоит таких усилий.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
11.09.2011, 08:15     Конструкторы template класса #5
Цитата Сообщение от SalterOk Посмотреть сообщение
this->temp = &T[sz];
Это ещё что за прелесть?
SalterOk
115 / 112 / 1
Регистрация: 02.06.2011
Сообщений: 280
11.09.2011, 13:24  [ТС]     Конструкторы template класса #6
Цитата Сообщение от Deviaphan Посмотреть сообщение
Это ещё что за прелесть?
это я так по-началу выделял память пока не вспомнил что при выходе из конструктора этот массив как локальный объект должет удалится
щас делаю так
C++
1
this->temp = new T[sz];
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2011, 15:15     Конструкторы template класса
Еще ссылки по теме:

Задача на конструкторы класса - C++
Дан класс, содержащий единственное поле типа int. Необходимо создать:  конструктор по умолчанию, который будет инициализировать поле...

Где создаются конструкторы класса? - C++
Добрый день, я начал учиться по книге Стэнли Липмана основам c++. Сейчас делаю программу, которая с помощью классов будет выводить значения...

Конструкторы и указатели на объект класса - C++
Добрый вечер. Помогите, пожалуйста, прояснить 2 вещи: 1) В чём будет отличие между конструкторами: int a; //Исп. оператор...

Компиляция класса вектор. Ошибка: missing template arguments before «v» - C++
Собственно код: #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;vector&gt; #include &lt;string&gt; using namespace std; int...


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

Или воспользуйтесь поиском по форуму:
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
11.09.2011, 15:15     Конструкторы template класса #7
Цитата Сообщение от SalterOk Посмотреть сообщение
при выходе из конструктора этот массив как локальный объект должет удалится
Даже больше скажу, он к следующей строке уже удалён.
И не забудь про delete в деструкторе.
Yandex
Объявления
11.09.2011, 15:15     Конструкторы template класса
Ответ Создать тему
Опции темы

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