Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > float operator[][][](float,float,float)


Автор: Dr.Wisdom 7.10.2005, 18:22
Че мне перегружать чтобы обращаться как к трехмерному массиву?

float operator[][][](float,float,float) - то что призодит в голову.

Автор: maxim1000 7.10.2005, 18:27
чтобы была возможна такая запись можно сделать так:
CSomeClass &operator[](float);
а в CSomeClass:
CAnotherClass &operator[](float);
а в CAnotherClass:
float operator[](float)
smile
Добавлено @ 18:27
P.S. сам не пробовал smile

Автор: Дрон 7.10.2005, 18:34
maxim1000
Прав.

В Си существуют только одномерные массивы.

Автор: Mayk 7.10.2005, 19:04
Элджер по-моему предлагает в качестве альтернативы использовать
operator[] (Index3 idx)
где Index3 -
Код

struct Index3{
 int a,b,c;
};

соответственно и используется для индексации.

Автор: maxim1000 7.10.2005, 20:41
Цитата
operator[] (Index3 idx)

так неинтересно...
придется писать
qqq[Index3(0,1,2)]
и то, если конструктор написать...
кстати, по-моему, можно перегрузить () на несколько аргументов
а []? (так чтобы их через запятую писать...)

Автор: Mayk 7.10.2005, 21:07
Цитата(maxim1000 @ 8.10.2005, 00:41)
а []? (так чтобы их через запятую писать...)

АФАИР нельзя. Сработает operator,. То есть
myvector[3,4] преобразуется myvector[4]
Добавлено @ 21:09
кстати. Можно перегрузить operator, чтоб он возвращал объект типа Index smile Хотя лучше не нужно smile

Автор: maxim1000 7.10.2005, 21:45
Цитата
кстати. Можно перегрузить operator, чтоб он возвращал объект типа Index

для этого хотя бы один из аргументов должен быть "нашего" типа...
просто для int'ов, по-моему не получится...

Автор: Earnest 8.10.2005, 16:49
Оператор [] действительно нельзя нагрузить больше чем одним аргументом, зато оператор () можно.
И пишите себе Massiv(3,5,10) на здоровье. По-моему, это гораздо удобнее, чем Massiv[3][5][10].

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)