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

Шаблон класса вектор - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.86
Scorpion93
 Аватар для Scorpion93
2 / 2 / 0
Регистрация: 31.10.2010
Сообщений: 120
14.11.2011, 10:01     Шаблон класса вектор #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
template <class T>
class Vector
{
public: //?
    int size;
    T* data;
public:
    Vector(int);
    int Size();
    T& operator [](int);
    ~Vector(void);
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
template <class  T> 
Vector<T>::Vector(int l)
{
    size=l;
    data = new T(l);
}
template <class  T> 
Vector<T>::~Vector(void)
{
    delete data[];
}
template <class  T>
int Vector<T>::Size(void)
{
    return size;
}
template <class  T>
T& Vector<T>::operator[](int i)
{
    return data[i];
}
C++
1
2
3
4
5
6
7
#include "Vector.h"
using namespace std;
int main()
{
    Vector <int> x(10);
return 0;
}
Так вот студия пишет ошибки..(на конструктор тоже...) Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Vector<int>::~Vector<int>(void)" (??1?$Vector@H@@QAE@XZ) в функции _main D:\test\test\test.obj test

подскажит в чем проблема пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2011, 10:01     Шаблон класса вектор
Посмотрите здесь:

Шаблон класса вектор с двумя членами-данными C++
C++ шаблон класса вектор
C++ вектор,шаблон
шаблон класса вектор C++
шаблон класса вектор C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.11.2011, 10:05     Шаблон класса вектор #2
Цитата Сообщение от Scorpion93 Посмотреть сообщение
C++
1
delete data[];
C++
1
delete [] data;
надеюсь и класс и реализация в одном файле?
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
14.11.2011, 10:06     Шаблон класса вектор #3
у шаблонов и описание класса и реализация методов должны быть в хидере. иначе будут такие ошибки. Есть вариант позволяющий выкинуть реализацию в срр-шник, но он слишком фигов. При этом варианте тебе надо указать с какими типами будет работать твой шаблон.
thick_int
Заблокирован
14.11.2011, 10:08     Шаблон класса вектор #4
У меня тоже только что така же ошибка была только с функциями. Ну тут люди добрые помогли мне.
Ну так вот, суть этой штуки по всей видимости такова.
Включать нужно шаблон и все его приббамбасы в один файл. То есть раздельной реализации с шаблонами не получится.

То есть в твоем случае, это означает перенос всего из файла vector.cpp в файл vector.h.
Я во вском случае так это поборол.

К сожалению, текуща версия студии не поддерживает ключевое слово export.
Bers
Заблокирован
14.11.2011, 10:12     Шаблон класса вектор #5
Scorpion93,

сразу на вскидку:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
template <class T>
class Vector
{
public: //?
        int size;  //почему размер вашего вектора 
                     //может быть отрицательным?
        T* data;
public:
        Vector(int);
        int Size();   //аналогично
        T& operator [](int);   
        ~Vector(void);
};
Далеее: нет стратегического запаса памяти. Постоянные реалоки.
Далеее: данный класс по техническим причинам требует наличия у клиентов дефолтных конструкторов. Если их не будит - ошибка компиляции.
(не предоставлена возможность указать прототип, по которому откопируются другие объекты)

Отсутствие службы безопасности - эт вообще лучше промолчать. Здесь этим не пахнет.
Yandex
Объявления
14.11.2011, 10:12     Шаблон класса вектор
Ответ Создать тему
Опции темы

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