Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Перегрузка операции индексации (http://www.tehnari.ru/f41/t62839/)

Genius108 20.01.2012 15:43

Перегрузка операции индексации
 
Необходимо перегрузить оператор индексации [ ] , я сделал как мог, но преподу не понравилось, сказал перегрузить с помощью вспомогательного класса. Я не знаю как, помогите, пожалуйста. :tehnari_ru_837:

Вот мой код:
Код:

#pragma once
#include <iostream>
using namespace std;

class matrix
{
        private:
               
                double *a;
                int n, m;

        public:

                matrix (int = 0,int = 0, double* = NULL);
                matrix (const matrix&);
                ~ matrix ();

                bool umnojenie (const matrix& ) const;
                bool summa (const matrix& ) const;

                const double* operator[] (int i) const;
                double* operator[] (int i);

                matrix& operator = (const matrix&);
                matrix& operator +=(const matrix&);
                matrix& operator -=(const matrix&);
                matrix& operator *=(const matrix&);
                matrix& operator *=(const double);

                friend matrix operator * (const matrix&, const matrix&);
                friend matrix operator * (const matrix&, double);
                friend matrix operator * (double , const matrix&);
                friend matrix operator + (const matrix&, const matrix&);
                friend matrix operator - (const matrix&, const matrix&);

                int get_Row () const;
                int get_Col () const;
       
                friend ostream& operator << (ostream&, const matrix &);
};


Genius108 20.01.2012 15:47

P.S. Компилятор Visual C++

Genius108 26.01.2012 16:30

попытался сделать так, но как-то косячно все это
Код:

#pragma once
#include <iostream>
using namespace std;

class matrix
{
        private:
       
                double *a;
                int n, m;
class Row
        {
        private:
                matrix* _matrix;
                int row;
                int i, m, j;

        public:

                double operator[](const int col)
                {
                        if( i<0 || i>=m ) throw "Ошибка";
       
                        return _matrix->GetValue(row,col);
                }
                Row(matrix* _m,int row)
                {
                        _matrix=_m;
                        this->row=row;

                }
        };
                       
       
        public:

matrix :: matrix (const matrix &_matrix)
{
        cout << "Конструктор копирования " << this << endl;
        n=_matrix.n;
        m=_matrix.m;
        a = _matrix.a ? new double[n*m] : NULL;
        if(_matrix.a) memcpy(a,_matrix.a,n*m*sizeof(double));
}
       

                matrix (int = 0,int = 0, double* = NULL);
                matrix (const matrix&);
                ~ matrix ();

                bool umnojenie (const matrix& ) const;
                bool summa (const matrix& ) const;

        //        const double* operator[] (int i) const;
            Row operator[](int i) const;
               
                matrix& operator = (const matrix&);
                matrix& operator +=(const matrix&);
                matrix& operator -=(const matrix&);
                matrix& operator *=(const matrix&);
                matrix& operator *=(const double);

                friend matrix operator * (const matrix&, const matrix&);
                friend matrix operator * (const matrix&, double);
                friend matrix operator * (double , const matrix&);
                friend matrix operator + (const matrix&, const matrix&);
                friend matrix operator - (const matrix&, const matrix&);

                int get_Row () const;
                int get_Col () const;
       
                friend ostream& operator << (ostream&, const matrix &);

                int GetValue(int row, int col) const;
};



Часовой пояс GMT +4, время: 02:55.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.