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

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

Войти
Регистрация
Восстановить пароль
 
MayaNash
1285 / 453 / 47
Регистрация: 24.08.2011
Сообщений: 2,214
#1

Ссылка на неразрешенный внешний символ - C++

01.04.2014, 18:02. Просмотров 412. Ответов 2
Метки нет (Все метки)

Ошибки:
1>Щербаков 2.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall matrix<int>::~matrix<int>(void)" (??1?$matrix@H@@QAE@XZ) в функции _main
1>Щербаков 2.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall matrix<int>::matrix<int>(void)" (??0?$matrix@H@@QAE@XZ) в функции _main

Но конструктор и деструктор определены, откуда такие ошибки?

matrix.h:
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
#pragma once
 
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
#include <conio.h>
#include <iomanip>
using std::setw;
 
template <class Type>
class matrix
{
public:
    matrix();
    ~matrix();
 
    void read();
    void print() const;
    void getRows();
    void getColms();
 
    Type operator()(int, int) const ;
    void operator += (const matrix &);
    void operator -= (const matrix &);
    void operator *= (const matrix &);
 
private:
    void clear();
 
    Type **matr;
    int rows,colms;
};
matrix.cpp:
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
137
138
139
#include "matrix.h"
 
template <class Type>
matrix<Type>::matrix()
{
    rows = 0;
    colms = 0;
    matr = NULL;
    cout << "Создана матрица 0х0\n\n";
}
 
template <class Type>
matrix<Type>::~matrix()
{
    clear();
    cout << "Матрица удалена\n\n";
}
 
template <class Type>
void matrix<Type>::clear()
{
    if (matr != NULL)
    {
        for (int i = 0; i < rows; i++)
            delete [] matr[i];
        delete [] matr;
    }
    cout << "Память освобождена\n\n";
}
 
template <class Type>
void matrix<Type>::read()
{
    rows = getRows();
    colms = getColms();
 
    clear();
    matr = new Type*[rows];
    cout << "Введите матрицу:\n";
    for (int i = 0; i < rows; i++)
    {
        matrix[i] = new Type[colms];
        for (int j = 0; j < colms; j++)
            cin >> matr[i][j];
    }
    cout << endl;
}
 
template <class Type>
void matrix<Type>::getRows()
{
    do
    {
        cout << "Введите количество строк: ";
        cin >> rows;
    }
    while (rows <= 0);
    cout << endl;
}
 
template <class Type>
void matrix<Type>::getColms()
{
    do
    {
        cout << "Введите количество столбцов: ";
        cin >> colms;
    }
    while (colms <= 0);
    cout << endl;
}
 
template <class Type>
void matrix<Type>::print() const
{
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < colms; j++)
            cout << setw(4) << matr[i][j];
        cout << endl;
    }
    cout << endl;
}
 
template <class Type>
Type matrix<Type>::operator()(int row, int col) const
{
    return matr[row][col];
}
 
template <class Type>
void matrix<Type>::operator += (const matrix &right)
{
    if (rows != right.rows || colms != right.colms)
    {
        cout << "Размеры матриц не совпадают!\n\n";
        getch();
        return;
    }
    for (int i = 0; i < rows; i++)
        for (int j = 0; j < colms; j++)
            matr[i][j] += right.matr[i][j];
    cout << "Сложение прошло успешно\n\n";
}
 
template <class Type>
void matrix<Type>::operator -= (const matrix &right)
{
    if (rows != right.rows || colms != right.colms)
    {
        cout << "Размеры матриц не совпадают!\n\n";
        getch();
        return;
    }
    for (int i = 0; i < rows; i++)
        for (int j = 0; j < colms; j++)
            matr[i][j] -= right.matr[i][j];
    cout << "Вычитание прошло успешно\n\n";
}
 
template <class Type>
void matrix<Type>::operator *= (const matrix &right)
{
    if (colms != right.rows)
    {
        cout << "Количество столбцов в первой матрице не совпадает с количеством столбцов во второй матрице!\n\n";
        return;
    }
 
    Type res;
    for (int i = 0; i < rows; i++)
        for (int j = 0; j < colms; j++)
        {
            for (int ii = 0, res = 0; ii < rows; ii++)
                res += matr[i][ii] + right[ii][j];
            matr[i][j] = res;
        };
    cout << "Умножение прошло успешно\n\n";
}
Щербаков 2.cpp:
C++
1
2
3
4
5
6
7
8
9
#include "matrix.h"
 
int main()
{
    setlocale(LC_ALL,"rus");
    matrix<int> obj;
    getch();
    return 0;
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2014, 18:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ссылка на неразрешенный внешний символ (C++):

Ссылка на неразрешенный внешний символ - C++
Ссылка на неразрешенный внешний символ _main в функции ____tmainCRTStartup В чем проблема?? #include &quot;stdafx.h&quot; #include...

Ссылка на неразрешенный внешний символ - C++
Строка 36 PathStripToRoot(szRoot); Вызывает ошибки: Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ...

Ссылка на неразрешенный внешний символ - C++
Здравствуйте. Пробую сделать что-то вроде map. Ошибка при создании объекта. #pragma once #include &lt;iostream&gt; template &lt;typename...

Ссылка на неразрешенный внешний символ - C++
Базовый класс - class area_cl{ public: int a,b; double height; //высота double wight; ...

Ссылка на неразрешенный внешний символ - C++
Identification_Organisation.h: #pragma once #include&lt;string&gt; using namespace std; class Main_Organisation { int...

Ссылка на неразрешенный внешний символ - C++
Приветствую. Проблема - при компиляции появляется ошибка вида: error LNK2019: ссылка на неразрешенный внешний символ &quot;int __cdecl...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Tulosba
:)
Эксперт С++
4395 / 3238 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
01.04.2014, 18:08 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Керра, реализацию шаблонных функций следует перенести в заголовочный файл.
1
MayaNash
1285 / 453 / 47
Регистрация: 24.08.2011
Сообщений: 2,214
01.04.2014, 18:20  [ТС] #3
Благодарю
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2014, 18:20
Привет! Вот еще темы с ответами:

Ссылка на неразрешенный внешний символ - C++
Следует сортировать рандомный массив методом включения и пузырьковым методом, после чего сравнить результат работы реализованных...

Ссылка на неразрешенный внешний символ - C++
Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ &quot;public: struct EQUIPMENT_ESSENCE * __thiscall...

Ссылка на неразрешенный внешний символ - C++
Добрый день всем! Помогите пожалуйста студенту, не пойму, то ли лыжи не едут, то ли май месяц на дворе, первая лаба по ООП, подучил теорию,...

Ссылка на неразрешенный внешний символ - C++
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; #define n 5 void InKeyboard(int a) {int i,j; printf(&quot;Vvedite...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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