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

Не могу объявить шаблонный класс - C++

Восстановить пароль Регистрация
 
dev.nikor
 Аватар для dev.nikor
25 / 26 / 1
Регистрация: 26.07.2010
Сообщений: 297
27.05.2013, 17:33     Не могу объявить шаблонный класс #1
Здравствуйте, имеется шаблонный класс динамического массива:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template<typename T>
class DynamicArray {
public:
    DynamicArray(int size);
    ~DynamicArray();
    void Add(T element);
    T Get(int index);
    void Resize(int newSize);
    void Show();
private:
    T* _box;
    int _currentSize;
    int _currentPosition;
};
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
#include "DynamicArray.h"
 
template<typename T>
DynamicArray<T>::DynamicArray(int size) {
    _box = new T[size];
    _currentSize = size;
    _currentPosition = 0;
}
 
template<typename T>
DynamicArray<T>::~DynamicArray() {
    delete[] _box;
}
 
template<typename T>
void DynamicArray<T>::Add(T element) {
    if(_currentPosition >= _currentSize)Resize(_currentSize * 2);
    _box[_currentPosition] = element;
}
 
template<typename T>
T DynamicArray<T>::Get(int index) {
    if(index < 0 || index >= _currentSize) throw "Out of bounds";
    return _box[index];
}
 
template<typename T>
void DynamicArray<T>::Resize(int newSize) {
    T* tempBox = new T[newSize];
    std::copy(_box, _box + _currentSize, tempBox);
    delete[] _box;
    _box = tempBox;
    _currentSize = newSize;
}
 
template<typename T>
void DynamicArray<T>::Show() {
    for(int i = 0; i < _currentSize; i++)std::cout << _box[i] < " ";
    std::cout << std::endl;
}
Когда я его компилирую с пустой функцией main, то всё нормально компилируется, но если я в main пишу
C++
1
DynamicArray<int> a(10);
то получаю ошибку линковщика. Скажите пожалуйста, что я делаю не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2013, 17:33     Не могу объявить шаблонный класс
Посмотрите здесь:

C++ Шаблонный класс
Переделать класс в шаблонный класс C++
C++ Шаблонный класс
Шаблонный класс C++
C++ Шаблонный класс
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
27.05.2013, 17:45     Не могу объявить шаблонный класс #2
Определения методов шаблонного класса должны быть в том же файле что и объявления этого класса.
dev.nikor
 Аватар для dev.nikor
25 / 26 / 1
Регистрация: 26.07.2010
Сообщений: 297
27.05.2013, 17:48  [ТС]     Не могу объявить шаблонный класс #3
yuron_477, в заголовочном файле?
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 929
Завершенные тесты: 1
27.05.2013, 17:52     Не могу объявить шаблонный класс #4
В данном случае да.
Yandex
Объявления
27.05.2013, 17:52     Не могу объявить шаблонный класс
Ответ Создать тему
Опции темы

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