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

Класс matrix. Не получается перегрузить оператор = - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Объявить аргументы по шаблону http://www.cyberforum.ru/cpp-beginners/thread964465.html
Доброго времени суток Задача весьма расплывчатая: нужно объявить функцию, или указатель на нее шаблоном Цель - вызвать эту функцию с проверкой аргументов: int f1(int a) { return -a; } //...
C++ Реализация шифра перестановки для заданного ключа Напишите пожалуйста код на С++ реализации шифра перестановки для заданного ключа. http://www.cyberforum.ru/cpp-beginners/thread964464.html
C++ Посчитать количество строк и слов в с++
Задание:Вводим несколько строк.Нужно посчитать количество строк и слов. Спасите меня))если можно,то с разъяснением
C++ Передача файла в функцию в качестве параметра
Здравствуйте! Подскажите, как передать файловый поток в функцию? int main() { ifstream fin("my file.txt"); ... }
C++ функция изменяет старший байт числа на заданное значение не изменяя младший байт http://www.cyberforum.ru/cpp-beginners/thread964442.html
функция изменяет старший байт числа на заданное значение не изменяя младший байт. как можно проще
C++ для заданной числовой последовательности 2n*5n! вычислить максимальный элемент и его номер Нужно написать программу если не сложно, или хотя бы разработать алгоритм, который для заданной числовой последовательности 2n*5n! вычисляет максимальный элемент и его номер с клавиатуры вводит только n подробнее

Показать сообщение отдельно
stepanovep
0 / 0 / 0
Регистрация: 28.09.2013
Сообщений: 3

Класс matrix. Не получается перегрузить оператор = - C++

28.09.2013, 21:19. Просмотров 415. Ответов 6
Метки (Все метки)

Всем привет! Пишу класс matrix.
Не получается перегрузить оператор =
Конструктор копирования тоже не получается. Оба выводят одну и ту же ошибку -
Необработанное исключение в "0x00c71f4a" в "matrix.exe": 0xC0000005:
Нарушение прав доступа при чтении "0xcccccccc".

Ошибка в 30-ой строке, где происходит присваивание mtr[i][j] = a.mtrp[i][j].
Помогите пожалуйста разобраться в чем-тут дело, вроде все легально)

Вот класс:
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
#include <fstream>
#include "matrix.h"
using namespace std;
 
ofstream cout ("output.txt");
 
#define FOR(i,n)    for(int i=0; i<n; ++i)
 
class matrix {
    int size;
    double **mtr;
public:
    //конструкторы
    matrix (const int n = 3);
    matrix (const matrix&);
    double* &operator [] (int i) {return mtr[i];}
    int get_size () {return size;}
    
 
 
    //арифметические операции
    matrix& operator = (const matrix& a){
        if (this == &a)
            return (*this);
 
        size = a.size;
        FOR (i,size)
            FOR(j,size)
            mtr[i][j] = a.mtr[i][j];
 
    }
    friend const matrix operator + (matrix&, matrix&);
    friend const matrix operator - (matrix&, matrix&);
    friend const matrix operator * (matrix&, matrix&);
    friend const matrix operator - (matrix&);  // унарный минус
    friend matrix& operator += (matrix&, matrix&);
    friend matrix& operator -= (matrix&, matrix&);
    friend matrix& operator *= (matrix&, matrix&);
    friend bool operator == (matrix&, matrix&);
 
    friend ostream& operator << (ostream&, matrix&);
};
int main(){
    matrix a(3), b(3);
    a[0][0] = b[1][2] = 2;
    cout << a << endl << b;
    matrix c = a;  // не работает!!
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru