Брутально и бессердечно о программировании и проектировании
ГлавнаяФорумАртПаттерныАнтипаттерныТест-драйвЗаметкиКнигорецензииСправочная

29 декабря 2008, Денис

Вопрос таков. Мне нужно перегрузить в C++ вот такой оператор [][].
Есть класс:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class My{
    int **elem; //массив
    int c;//количество столбцов
    int r; //количество строк
public:
    My(int a, int b) 
    {
        c=a;
        r=b;
        elem = new int *[a]; 
        for(int i=0;i<a;i++) 
        {elem[i]=new int [b];}
    }
    My() {}
    ~My() {}
};
 
Денис, в C++ нет оператора [][], есть один оператор [], который применяется к результату другого оператора []. В вашем примере это могло бы быть вот так.

Однако, не стоит забывать, что с точки зрения промышленного программирования этот класс — это кромешный пиздец. Если бы я увидел такое в коде своего соискателя, то на этом наша беседа была бы отложена года на два-три.
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class My{
    int **elem; //массив
    int c;//количество столбцов
    int r; //количество строк
public:
    My(int a, int b) 
    {
        c=a;
        r=b;
        elem = new int *[a]; 
        for(int i=0;i<a;i++) 
        {elem[i]=new int [b];}
    }
    My() {}
    ~My() {}

    int* operator [] (std::size_t col) // oops!
    {
        return elem[col];
    }
};
Компилировать в Comeau

Оглавление
Статистика
© 2007—2009 Inside C++ Коммерческие услугиКонтактная информация