Форум программистов, компьютерный форум 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) . Считать, что требуемая точность достигнута, если вычислена сумма нескольких первых слагаемых, и очередное слагаемое оказалось по модуле меньше, чем , E — это и все последующие слагаемые можно уже не учитывать. Вычислить по формуле Посмотрите код: #include <iostream> #include <math.h> using namespace std;
C++ Инициализировать строку готовыми данными
У меня в памяти есть адрес, где лежит строка. есть функция, которая возвращает мне указатель на эту строку. (вообще то это функция, возвращающая значение типа const StringBuffer& ) Мне хочется из этого указателя сделать переменную типа const char*, инициализированную этой строкой. Блин, не один день мучаюсь, и уже написал вопрос в три форума. Нельзя ли как то на минуточку отменить...
C++ Строки. Подсчитайте наибольшее количество идущих подряд букв кириллицы http://www.cyberforum.ru/cpp-beginners/thread812091.html
Помогите написать программу: Дана строка символов. Подсчитайте наибольшее количество идущих подряд букв кириллицы Заранее спасибо.
C++ Как сделать в коде программы, чтобы можно было вводить числа самому, а не случайно. (Код прилагается) Доброго времени суток. Хочу узнать, как можно сделать вместо случайного ввода чисел заданый ввод. Нужно ввести вектор А, вместо его случайного ввода. #include <iostream> using namespace std; #include <cstdlib> #include <ctime> int main() подробнее

Показать сообщение отдельно
Ivan101
0 / 0 / 0
Регистрация: 18.03.2013
Сообщений: 4
18.03.2013, 20:53     Проблемы с шаблоном класса
Здравствуйте,
помогите пожалуйста понять в чем ошибка, пытаюсь написать шаблон класса векторов, но получаю следующее:
Код
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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru