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

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

Войти
Регистрация
Восстановить пароль
 
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
#1

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

01.04.2014, 18:02. Просмотров 405. Ответов 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;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2014, 18:02     Ссылка на неразрешенный внешний символ
Посмотрите здесь:

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

Ссылка на неразрешенный внешний символ - C++
//Структура пользователя программой struct User { char* Login; char* Password; }; //Массив пользователей User Array;

Ссылка на неразрешенный внешний символ - C++
Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ &quot;void __cdecl phyRestoreConsoleAttributes(void)&quot;...

Ссылка на неразрешенный внешний символ - 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...

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

Ссылка на неразрешенный внешний символ - C++
error LNK2019: ссылка на неразрешенный внешний символ &quot;public: class LogProb __thiscall transpair_model4::...

Ссылка на неразрешенный внешний символ - C++
Что это? Как я понял это какая то переменная/функция, которая некотором образом не видна другой функции. Но почему ошибка возникает на...

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
01.04.2014, 18:08     Ссылка на неразрешенный внешний символ #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Керра, реализацию шаблонных функций следует перенести в заголовочный файл.
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
01.04.2014, 18:20  [ТС]     Ссылка на неразрешенный внешний символ #3
Благодарю
Yandex
Объявления
01.04.2014, 18:20     Ссылка на неразрешенный внешний символ
Ответ Создать тему
Опции темы

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