Об операндах

Вопросы по программированию, не подходящие в другие разделы.

Модераторы: Naeel Maqsudov, C_O_D_E

Ответить
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

Не понимаю, почему нельзя перегружать оператор присваивания на произвольное число операндов. На паскале массив массивов - синоним массива суммарной размерности. То есть к трёхмерному можно обращаться:
1. как к одномерному массиву одномерных массивов одномерных массивов,
2. как к одномерному массиву двумерных массивов,
3. как к двумерному массиву одномерных массивов,
4. как к трёхмерному массиву,
причём, по-моему, не зависимо от того, как именно массив задекларирован. А на плюсплюсе приходится для каждого многомерного динамического массива объявлять не только класс массива полной размерности, но и кучу вспомогательных классов динамических массивов единичной и всех промежуточных размерностей. Очень не удобно. Удобнее было бы так:

Код: Выделить всё

class TArray3
{
 protected:
 double *Data; 
 int nx,ny,nz;
 ...
 public:
 double & operator [] (int x,y,z) 
 {
  return Data[x+y*nx+z*nx*ny];
 }
... 
};
.Объявил сразу трёхмерный оператор индексации и никаких гвоздёв. Но почему-то на плюсплюсе так нельзя. Какой униксоид это придумал и будет ли это исправлено?
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответить