Перегрузка оператора [][] в C++

200
26 ноября 2016, 19:32

У меня есть класс "Матрица". И в нём нужно перегрузить оператор [] так, дабы при обращении [][] к элементам имело смысл, аналогично встроенному. Пробовал так:

Matrix& operator[][](int a,int b);

Не получилось, поиски в Google ни к чему не привели. Может кто-то знает как реализовать?

Answer 1

Определите оператор [], который будет возвращать строку - как указатель, вектор или еще что-то, для чего определен оператор [], который будет возвращать ссылку на конкретный элемент...

Простейший пример:

class Matrix
{
public:
    Matrix(int R, int C):R(R),C(C)
    {
        d = new int*[R];
        for(int i = 0; i < R; ++i)
            d[i] = new int[C];
    }
    ~Matrix()
    {
        for(int i = 0; i < R; ++i)
            delete[] d[i];
        delete[] d;
    }
    int* operator[](int idx) { return d[idx]; }
    const int* operator[](int idx) const { return d[idx]; }
private:
    int ** d;
    int R, C;
};
int main()
{
    Matrix M(3,3);
    for(int i = 0; i < 3; ++i)
        for(int j = 0; j < 3; ++j)
            M[i][j] = 10*i + j;
    for(int i = 0; i < 3; ++i)
    {
        for(int j = 0; j < 3; ++j)
        {
            cout << setw(2) << M[i][j] << "  ";
        }
        cout << endl;
    }
}

Естественно, никакие ошибки у меня не обрабатываются.

READ ALSO
java, Intellij IDEA и remote development

java, Intellij IDEA и remote development

Каким образом настроить компиляцию на удаленной машине java-приложения ? В netbeans все достаточно просто и работает безотказно, а вот в intellij idea никак...

252
Как из SQLite Бд вывести элемент в TextView

Как из SQLite Бд вывести элемент в TextView

В общем у меня есть listView в главном активити:

339
Android изменение xml атрибутов через Java

Android изменение xml атрибутов через Java

Как менять xml атрибуты макетов через Java код android? Вначале подумал об использовании регулярных выражений, но мне сказали, что "парсить регулярками...

241
Помогите написать селектор jsoup

Помогите написать селектор jsoup

Есть вот такой кусок вебкодаНужно выбрать 4591077

227