theone555
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору akaGM, да. karakurt2, благодарю за наводку. я действительно как то пролетел мимо этого копирование не поняв его сути. проблему обошел, но не копированием. при явном копировании компиль ругается уже на первой перегрузке, т.к. сразу обращается к конструктору копирования. akaGM, karakurt2, and to ALL, если интересно, посмотрите пожалуйста что у меня получилось. достаточно ли это корректно... Код: /*Создать класс для работы с матрицами. Предусмотреть, как минимум, функции для сложения матриц, умножения матриц, транспонирования матриц, присваивания матриц друг другу, установка и получение произвольного элемента матрицы. Необходимо перегрузить соответствующие операторы. */ #include <iostream> #include <iomanip> using namespace std; class Cmatrix { private: short **mas; short size; public: Cmatrix()//конст по умолч { size = 3; mas = new short * [size]; for (short i = 0; i < size; i++) mas[i] = new short [size]; short count(1); for (short i = 0; i < size; i++) for (short j = 0; j < size; j++, count++) mas[i][j] = count; } /* Cmatrix (const Cmatrix& X)//конст копир { short **newmas; newmas = new short* [X.size]; for (short i=0; i<X.size; i++) newmas[i] = new short [size]; for (short i = 0; i < X.size; i++) for (short j = 0; j < X.size; j++) newmas[i][j] = X.mas[i][j]; } */ //перегрузка + Cmatrix operator + (Cmatrix &B) { for (short i = 0; i < size; i++) { for (short j = 0; j < size; j++) { mas[i][j] += B.mas[i][j]; } } return *this; } //перегрузка * Cmatrix operator * (Cmatrix &B) { for (short i = 0; i < size; i++) { for (short j = 0; j < size; j++) { mas[i][j] *= B.mas[i][j]; } } return *this; } //перегрузка != Cmatrix& operator != (Cmatrix &C) { short** newmas; newmas = new short* [size]; for (short i = 0; i < size; i++) newmas[i] = new short [size]; for (short i =0 ; i < size; i++) for (short j = 0; j < size; j++) newmas[i][j] = C.mas[i][j]; for (short i = 0; i < size; i++)//строка {cout<<endl; for (short j = 0; j < size; j++)//столбец { C.mas[i][j] = newmas[j][i]; cout<<setw(4)<<C.mas[i][j]; } } for (short i = 0; i < size; i++) delete newmas[i]; delete [] newmas; return C; } friend ostream& operator<<(ostream& co, const Cmatrix& X); }; ostream& operator << (ostream&stream, const Cmatrix &X) { for (short i = 0; i < X.size; i++) { cout<<endl; for (short j = 0; j < X.size; j++) stream<<setw(4)<<X.mas[i][j]; } stream<<endl; return stream; } void main() { Cmatrix A; Cmatrix B; Cmatrix C; cout<<B; C = A + B; cout<<C; C = A * B; cout<<C; C!=C; cout<<C; cout<<endl<<endl; } |
|