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

Ошибка при переопределении операторов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Удалить строку и столбец, на пересечении которых расположен наименьший по модулю элемент матрицы http://www.cyberforum.ru/cpp-beginners/thread1020184.html
Задан двумерный массив целых чисел. Удалить строку и столбец, на пересечении которых расположен наименьший по модулю элемент матрицы. Помогите написать код, сам пытался, не знаю как написать удаление строки и столбца. Буду очень благодарен.
C++ Функции Подскажите пожалуйста как использовать функцию на примере вот этого задания. http://www.cyberforum.ru/cpp-beginners/thread1020161.html
Определить количество тех элементов, которые без остатка делятся на собственный индекс C++
Ввести одномерный массив A из 13 элементов. Определить количество тех элементов, которые без остатка делятся на собственный индекс.
вычислить f(а) C++
Дано вещественное число а. Для функции y=f(x), график которой приведен ниже вычислить f(а).
C++ Найти сумму значений нелистовых вершин дерева http://www.cyberforum.ru/cpp-beginners/thread1020122.html
Дано целочисленное бинарное дерево. Найти сумму значений нелистовых вершин дерева. #include <iostream> #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> #include <iomanip> #include <math.h> using namespace std;
C++ Периключение режима файла Есть бинарный файл. Я в него сначала записал информацию. Потом ее необходимо считать. Как правильно его закрыть\открыть и нужно ли где-нибудь устанавливать указатель на начало? Через потоки. подробнее

Показать сообщение отдельно
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
27.11.2013, 01:03     Ошибка при переопределении операторов
Не хватает перегрузки оператора присваивания и конструктора копии.

Добавлено через 27 секунд
Цитата Сообщение от xajker Посмотреть сообщение
delete &matr, &matr1;
ну и это лишнее


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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
#include <iostream>
using namespace std;
class Matrix
{
private:
    int n;
    int **elements;
    void allocation();
    void clear();
public:
    /*Matrix();*/
    Matrix(int _n);
    Matrix(const Matrix& m);
    ~Matrix();
    
    void fill();
    void print();
    Matrix & operator= (const Matrix &matr);
    Matrix& operator+=(const Matrix& matr);
    Matrix operator+ (const Matrix &matr);
    Matrix & operator -=(const Matrix& matr);
    Matrix operator- (const Matrix & matr);
};
 
void Matrix::allocation()
{
     elements = new int*[n];
    for(int i=0; i <n; i++) 
        elements[i] = new int[n];
     for (int i=0; i<n; ++i) 
     for (int j=0; j<n; ++j) 
       elements[i][j] = 0;
}
 
void Matrix::clear()
{
     for(int i = 0; i < n; i++)
        delete [] elements[i];
 
 delete [] elements;
}
 
 
 
Matrix::Matrix(const Matrix& m) :n(m.n)
 {
   allocation();
     for (int i=0; i<n; ++i) 
     for (int j=0; j<n; ++j) 
       elements[i][j] = m.elements[i][j];
}
 
Matrix::Matrix(int _n = 1):n(_n)
{
   allocation();  
}
 
void Matrix::fill()
{
    int tmp;
    for(int i=0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cout<<"Enter ["<<i<<"]["<<j<<"] element of matrix"<<endl;
            cin>>tmp;
            elements[i][j] = tmp;
        }
    }
}
 
Matrix::~Matrix()
{
   clear();
}
 
 
void Matrix::print()
{
    for(int i = 0; i < n; i++)
    {
        cout<<" "<<endl;
        for (int j = 0; j < n; j++)
            cout<<" "<<elements[i][j];
    }
    std::cout << std::endl;
}
 
Matrix & Matrix::operator =(const Matrix & matr)
{
    if( this != &matr )
    {
        if( matr.n != this->n )
        {
           this->clear();
           this->n = matr.n; 
           allocation();
        }
 
      for (int i=0; i<n; ++i) 
      for (int j=0; j<n; ++j) 
       elements[i][j] = matr.elements[i][j];
    }
            
            return *this;
}
 
Matrix & Matrix::operator+=(const Matrix& matr)
{
    if( matr.n != this->n )
        {
           this->clear();
           this->n = matr.n; 
           allocation();
        }
 for (int i = 0; i < n; i++)
     for (int j = 0; j < n; j++)
         elements[i][j] += matr.elements[i][j]; 
        return *this;
}
 
Matrix Matrix::operator+(const Matrix & matr)
{
            Matrix tmpmatr(*this);                        
         return (tmpmatr += matr);
}
 
Matrix & Matrix::operator -=(const Matrix& matr)
{
    if( matr.n != this->n )
        {
           this->clear();
           this->n = matr.n; 
           allocation();
        }
 for (int i = 0; i < n; i++)
     for (int j = 0; j < n; j++)
         elements[i][j] -= matr.elements[i][j]; 
        return *this;
}
 
Matrix Matrix::operator-(const Matrix&  matr)
{
     Matrix tmpmatr(*this);                        
         return (tmpmatr -= matr);
}
int main()
{
Matrix matr(2);
    matr.fill();
    matr.print();
 
    Matrix matr1(2);
    matr1.fill();
    matr1.print();
  
    matr +=  matr1; 
    matr.print();
    Matrix matr3;
    matr3 -= matr1;
    matr3.print();
 
    std::cin.get();
    std::cin.get();
}
 
Текущее время: 05:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru