| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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) Добавлено @ 18:27 P.S. сам не пробовал |
| Автор: Дрон 7.10.2005, 18:34 |
| maxim1000 Прав. В Си существуют только одномерные массивы. |
| Автор: Mayk 7.10.2005, 19:04 | ||
| Элджер по-моему предлагает в качестве альтернативы использовать operator[] (Index3 idx) где Index3 -
соответственно и используется для индексации. |
| Автор: maxim1000 7.10.2005, 20:41 | ||
так неинтересно... придется писать qqq[Index3(0,1,2)] и то, если конструктор написать... кстати, по-моему, можно перегрузить () на несколько аргументов а []? (так чтобы их через запятую писать...) |
| Автор: Mayk 7.10.2005, 21:07 | ||
АФАИР нельзя. Сработает operator,. То есть myvector[3,4] преобразуется myvector[4] Добавлено @ 21:09 кстати. Можно перегрузить operator, чтоб он возвращал объект типа Index |
| Автор: maxim1000 7.10.2005, 21:45 | ||
для этого хотя бы один из аргументов должен быть "нашего" типа... просто для int'ов, по-моему не получится... |
| Автор: Earnest 8.10.2005, 16:49 |
| Оператор [] действительно нельзя нагрузить больше чем одним аргументом, зато оператор () можно. И пишите себе Massiv(3,5,10) на здоровье. По-моему, это гораздо удобнее, чем Massiv[3][5][10]. |