Об операндах
Добавлено: 23 окт 2009, 08:52
Не понимаю, почему нельзя перегружать оператор присваивания на произвольное число операндов. На паскале массив массивов - синоним массива суммарной размерности. То есть к трёхмерному можно обращаться:
1. как к одномерному массиву одномерных массивов одномерных массивов,
2. как к одномерному массиву двумерных массивов,
3. как к двумерному массиву одномерных массивов,
4. как к трёхмерному массиву,
причём, по-моему, не зависимо от того, как именно массив задекларирован. А на плюсплюсе приходится для каждого многомерного динамического массива объявлять не только класс массива полной размерности, но и кучу вспомогательных классов динамических массивов единичной и всех промежуточных размерностей. Очень не удобно. Удобнее было бы так:
.Объявил сразу трёхмерный оператор индексации и никаких гвоздёв. Но почему-то на плюсплюсе так нельзя. Какой униксоид это придумал и будет ли это исправлено?
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];
}
...
};