0 / 0 / 0
Регистрация: 27.11.2021
Сообщений: 28
1

Проблемы при создании класса матриц

27.11.2021, 23:51. Показов 749. Ответов 2

Author24 — интернет-сервис помощи студентам
Добрый день. Занимаюсь созданием класса матриц. У меня появилась ошибка, но почему она - никак не могу понять. Помогите. пожалуйста!

Ошибка встречается в 64 и 80 строках после c, a и b.
Текст ошибки: "no match for 'operator[]' (operand types are 'matrix<int>' and 'int')"
Встречается в 64 и 80 строках после c, a и b.
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
#include <iostream>
#include <cmath>
using namespace std;
 
template <typename T>
class matrix
{
    private:
        T **_matrix;
        int n, m; 
    
    public:
        // матрица без элементов
        matrix()
        {
            _matrix = 0;
            n = 0;
            m = 0;
        }
        
        // создание матрицы
        matrix(int n, int m)
        {
            int _n = n;
            int _m = m;
            _matrix = new T *[n];
            for(int i = 0; i < n; i++)
                _matrix[i] = new T[m];
        }
        
        // создание единичной матрицы
        matrix(int n, int m, bool E)
        {
            int _n = n;
            int _m = m;
            _matrix = new T *[n];
            for(int i = 0; i < n; i++)
            {
                _matrix[i] = new T[m];
                _matrix[i][i] = E;
            }
        }
        
        // возвращает кол-во строк
        int str()
        {
            return n;
        }
        
        // возвращает кол-во столбцов
        int col()
        {
            return m;
        }
        
        // сложение матриц
        friend matrix operator+( matrix &a, matrix &b)
        {
            if(a.str() == b.str() && a.col() == b.col())
            {
                matrix c(a.str(),a.col());
                for(int i = 0; i < a.str(); i++)
                    for(int j = 0; i < a.col(); i++)
                        c[i][j] = a[i][j] + b[i][j]; 
                return c;
            }
            else
                return matrix();
        }
        
        // умножение матриц
        friend matrix operator*(matrix &a, matrix &b)
        {
            if(a.col() == b.str())
            {
                matrix c(a.str(),b.col());
                for(int i = 0; i < c.str(); i++)
                    for(int j = 0; j < c.col(); j++)
                        for(int k = 0; k < a.col(); k++)
                            c[i][j] = a[i][k] * b[k][j];
                return c;
            }
            else
                return matrix();
        }
};
 
int main()
{
    matrix <int> A(3,3,1);
    matrix <int> B(3,3,1);
    A + B;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2021, 23:51
Ответы с готовыми решениями:

Проблемы при создании static константы того же типа что и класс, внутри шаблонного класса
Я создал шаблон класса чисел и хотел в нем создать несколько static-констант, представителей...

При создании объекта наследуемого класса не срабатывает конструктор родительского класса
Уважаемые, эксперты! Суть простая. 1. Есть базовый класс String. В нём массив фиксированной...

Использование объекта одного класса при создании нового класса
Добрый вечер. У меня такая проблема. Есть готовый класс L2 - список, на его основе нужно создать...

Проблемы при создании *.txt файла консолем
у меня код #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &quot;locale.h&quot;...

Ошибка при чтении символов строки при создании объекта класса
У меня имеется класс Song, в котором присутствуют поля имени песни (Name) и длительности песни...

2
Software Developer
315 / 229 / 113
Регистрация: 03.05.2017
Сообщений: 1,330
28.11.2021, 00:15 2
Лучший ответ Сообщение было отмечено kartonka228 как решение

Решение

Ну так перезагрузите оператор []
1
0 / 0 / 0
Регистрация: 27.11.2021
Сообщений: 28
28.11.2021, 01:16  [ТС] 3
Спасибо!

Решил задачу следующим образом:
C++
1
2
3
4
int* operator [] (int x) // перегрузка оператора []
        {
            return _matrix[x];
        }
0
28.11.2021, 01:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2021, 01:16
Помогаю со студенческими работами здесь

Трудности при создании класса
Делаю приложения на Windows Forms. Надо сделать иерархию классов. В абстрактом классе описал нужные...

Ошибка при создании класса
triangle.h #ifndef TRIANGLE_H #define TRIANGLE_H #include &quot;Point.h&quot; class Triangle {...

Ошибка при создании класса
написал класс:#include&lt;windows.h&gt; class Hook{ public: void SetHook(){ HINSTANCE hinstDLL =...

Ошибка при создании класса
Есть графический класс ellips производный от TFigure . его при создании экземпляра надо нарисовать...

Ошибка при создании класса матриц
Здравствуйте. В лабораторной одним из заданий нужно создать класс Matrix, реализующий работу с...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru