![]() |
я на много медленнее это делаю, просто хобби. А без хобби на куда, т.к это одно из составляющих счастья :)
это не пример конечно, а мое искусство :) хотелось бы узнать в каком месте я за рычаг потянул? надо было перегрузить operator[][] << >> для матриц. криворукий код: Код:
//MAIN.CPP 1>------ Построение начато: проект: Упражнение_на_перегрузку_операций, Конфигурация: Debug Win32 ------ 1>Компиляция... 1>main.cpp 1>c:\$p\mvs\{как программировать на с++}\упражнение_на_перегрузку_операций\упражнение_на_перегрузку_операций\main.cpp(35) : error C2540: неконстантное выражение используется в качестве границы массива 1>c:\$p\mvs\{как программировать на с++}\упражнение_на_перегрузку_операций\упражнение_на_перегрузку_операций\main.cpp(35) : error C2440: =: невозможно преобразовать 'int (*)[1]' в 'int *' 1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции 1>c:\$p\mvs\{как программировать на с++}\упражнение_на_перегрузку_операций\упражнение_на_перегрузку_операций\main.cpp(45) : error C2059: синтаксическая ошибка: ] 1>c:\$p\mvs\{как программировать на с++}\упражнение_на_перегрузку_операций\упражнение_на_перегрузку_операций\main.cpp(52) : error C2678: бинарный '[': не найден оператор, принимающий левый операнд типа 'const Matrix' (или приемлемое преобразование отсутствует) 1> c:\$p\mvs\{как программировать на с++}\упражнение_на_перегрузку_операций\упражнение_на_перегрузку_операций\main.cpp(25): может быть 'int &Matrix::operator [](int)' 1> при попытке сопоставить список аргументов '(const Matrix, int)' 1>c:\$p\mvs\{как программировать на с++}\упражнение_на_перегрузку_операций\упражнение_на_перегрузку_операций\main.cpp(60) : error C2109: для индекса требуется массив или указатель 1>Журнал построения был сохранен в "file://c:\$p\mvs\{как программировать на с++}\Упражнение_на_перегрузку_операций\Упражнение_на_перегрузку_операций\Debug\BuildLog.htm" 1>Упражнение_на_перегрузку_операций - ошибок 5, предупреждений 0 ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ========== |
часть сам уже сделал:
Код:
//MAIN.CPP Мне кажется, что надо [] последовательно перегрузить. А? |
Я решил все сам, ток не могу понять как оно работает:
Код:
//MAIN.CPP |
Остался один вопрос.
Как сделать так, что бы вместо Код:
matrix[row][column] Код:
matrix[row, column] ??? |
котвася, Это надо кажется перегружать () - operator()
Тогда будет формироватья matrix(row, column); |
вариантов как всегда море:
1) Код:
struct index Код:
class Row |
Как понял надо сделать так:
Код:
//MAIN.CPP |
Цитата:
Код:
// примерно так должно быть |
собирается, чего тут удивительного?
|
я думал в c/c++ нет конструкции [a, b] (т.е. вызова оператора [] с двумя аргументами)
|
не ну работает, только не правильно)
|
Откомпилировал, сначала долго удивлялся, но потом вспомнил про оператор ",". Смысл в следующем: все выражения должны приводиться к первому, стоящему перед первой запятой. Результатом оказывается последний (после последней запятой). Например:
Код:
int i = (1,2,3); |
|
Время: 05:05. |
Время: 05:05.
© OSzone.net 2001-