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

Проблемы с шаблоном класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ где лучше реализовывать методы в классе или вне http://www.cyberforum.ru/cpp-beginners/thread812121.html
читал где-то, что реализация метода в теле класса или вне его не одно и то же. так ли это и в чем разница?
C++ Распространение функции на всю программу Здравствуйте, помогите пожалуйста мне добиться нужного эффекта. Нужно, чтобы в моей программе пункт удаление записи распространялся на всю программу (а сейчас запись удаляется только когда... http://www.cyberforum.ru/cpp-beginners/thread812115.html
C++ Вычислить бесконечную сумму с заданной точностью
Вычислить бесконечную сумму с заданной точностью E(E>0) . Считать, что требуемая точность достигнута, если вычислена сумма нескольких первых слагаемых, и очередное слагаемое оказалось по модуле...
C++ Инициализировать строку готовыми данными
У меня в памяти есть адрес, где лежит строка. есть функция, которая возвращает мне указатель на эту строку. (вообще то это функция, возвращающая значение типа const StringBuffer& ) Мне хочется из...
C++ Строки. Подсчитайте наибольшее количество идущих подряд букв кириллицы http://www.cyberforum.ru/cpp-beginners/thread812091.html
Помогите написать программу: Дана строка символов. Подсчитайте наибольшее количество идущих подряд букв кириллицы Заранее спасибо.
C++ Как сделать в коде программы, чтобы можно было вводить числа самому, а не случайно. (Код прилагается) Доброго времени суток. Хочу узнать, как можно сделать вместо случайного ввода чисел заданый ввод. Нужно ввести вектор А, вместо его случайного ввода. #include <iostream> using namespace std; ... подробнее

Показать сообщение отдельно
Ivan101
0 / 0 / 0
Регистрация: 18.03.2013
Сообщений: 4

Проблемы с шаблоном класса - C++

18.03.2013, 20:53. Просмотров 852. Ответов 8
Метки (Все метки)

Здравствуйте,
помогите пожалуйста понять в чем ошибка, пытаюсь написать шаблон класса векторов, но получаю следующее:
Код
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Array1_D<double>::~Array1_D<double>(void)" (??1?$Array1_D@N@@QAE@XZ) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Array1_D<int>::~Array1_D<int>(void)" (??1?$Array1_D@H@@QAE@XZ) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall Array1_D<int>::printArray1_D(void)" (?printArray1_D@?$Array1_D@H@@QAEXXZ) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: int & __thiscall Array1_D<int>::operator[](int)" (??A?$Array1_D@H@@QAEAAHH@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Array1_D<int>::Array1_D<int>(int)" (??0?$Array1_D@H@@QAE@H@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: class Array1_D<double> & __thiscall Array1_D<double>::operator=(class Array1_D<double> &)" (??4?$Array1_D@N@@QAEAAV0@AAV0@@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: class Array1_D<double> & __thiscall Array1_D<double>::operator+(class Array1_D<double> &)" (??H?$Array1_D@N@@QAEAAV0@AAV0@@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall Array1_D<double>::printArray1_D(void)" (?printArray1_D@?$Array1_D@N@@QAEXXZ) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: double & __thiscall Array1_D<double>::operator[](int)" (??A?$Array1_D@N@@QAEAANH@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Array1_D<double>::Array1_D<double>(int)" (??0?$Array1_D@N@@QAE@H@Z) в функции _main
1>C:\Users\Vladimir\Documents\Visual Studio 2010\Projects\matrix\Debug\matrix.exe : fatal error LNK1120: 10 неразрешенных внешних элементов
сам код:


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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#ifndef _MATRIX_H
#define _MATRIX_H
#include <iostream>
using namespace std;
template <class T> class Array1_D
{
private:
    T *variable;
    int size;
public:
    Array1_D();
    Array1_D(int size_of_array);
    Array1_D(const Array1_D &);
    ~Array1_D();
    void setSizeOfArray1_D(int size_of_array);
    void printArray1_D();
    friend bool operator ==(Array1_D &,Array1_D &);
    friend bool operator != (Array1_D &, Array1_D &);
    T &operator [](int i);
    Array1_D &operator+(Array1_D &);
    Array1_D &operator=(Array1_D &);
};
#endif
 
#include "matrix.h"
template <class T>
Array1_D<T>::Array1_D():size(0){
    variable=new T [size];
}
 
template <class T>
Array1_D<T>::Array1_D(int size_of_array)
{
    size=size_of_array;
    variable = new T [size];
}
 
template <class T> 
Array1_D<T>::Array1_D(const Array1_D &anotherArray)
{
    size=anotherArray.size;
    for (int i=0;i<size;i++)
        variable[i]=anotherArray.variable[i];
    }
 
template <class T>
Array1_D<T>::~Array1_D()
{
    delete []variable;
    
}
 
template <class T> 
void Array1_D<T>::setSizeOfArray1_D(int size_of_array)
{
    this->size=size_of_array;
    this->variable=new T [size];
}
 
template <class T> 
void Array1_D<T>::printArray1_D()
{
    for(int i=0;i<size;i++)
        cout<<variable[i]<<endl;
}
 
template <class T> 
T &Array1_D<T>::operator[](int i)
{
    return (variable[i]);
}
 
 
template <class T> 
Array1_D<T> &Array1_D<T>::operator= (Array1_D &anotherArray1_D)
{
    for(int i=0;i<size;i++)
    {
        this->variable[i]=anotherArray1_D.variable[i];
    }
 
    return *this;
 
}
 
template <class T> 
Array1_D<T> &Array1_D<T>::operator+(Array1_D &anotherArray1_D)
{
    Array1_D *temp=new Array1_D;
    temp->setSizeOfArray1_D(this->size);
    for(int i=0;i<size;i++)
        temp->variable[i]=this->variable[i]+anotherArray1_D.variable[i];
    return *temp;
}
 
template <class T>
bool  operator==(Array1_D<T> &one,Array1_D<T> &two)
{
    if(one.size==two.size)
        return true;
    else 
        return false;
 
}
 
template <class T> 
bool operator!=(Array1_D<T> &one,Array1_D<T> &two)
{
    return !(one.size==two.size);
}
 
int main()
{
    Array1_D<double> p(3);
    Array1_D <double> r(3);
    for(int i=0;i<3;i++)
    {
        p[i]=1.0;
        r[i]=2.0;
    }
    p.printArray1_D();
    Array1_D <double> k(3);
    k=p+r;
    k.printArray1_D();
    p.printArray1_D();
 
 
    Array1_D<int> s(10);
    for(int i=0;i<10;i++)
    {
        s[i]=i;
    }
 
    s.printArray1_D();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru