Kirill
Вызов delete[] в функции расчета следа это бред полный. После этого объект переходит в неработоспособное состояние.
Vladislav
к слову, математический след по-английиски это trace а не track
Kirill
Эта функция вообще должна быть const.
Ned
вообще говоря, я руководствовался той логикой, что раз объект вызвал исключение, он уже неработоспособен и надо стереть память пока не поздно
Ned
однако придумал-таки ситуацию, где этого делать не стоит и постирал дилиты
Ned
а потом откатился к старой ветке
Kirill
Нет, это не так
Ned
так что спасибо, что внимательно читали и напомнили)
Ned
к слову, математический след по-английиски это trace а не track
а на мехмате сказали трэк, прикинь) исправлю, спасибо
Kirill
Твой класс предназначен для хранения матриц произвольных размерностей. Ты решил добавить функцию-член для подсчета следа, который определен только для квадратных. У тебя два выбора. Либо ты просто выбрасываешь исключение при вызове этой функции для неквадратной матрицы, либо создаешь подкласс SquareMatrix и уже для него реализуешь эту функцию. Но тогда его конструктор будет другой.
Kirill
Второй вариант лучше не используй.
Ned
Твой класс предназначен для хранения матриц произвольных размерностей. Ты решил добавить функцию-член для подсчета следа, который определен только для квадратных. У тебя два выбора. Либо ты просто выбрасываешь исключение при вызове этой функции для неквадратной матрицы, либо создаешь подкласс SquareMatrix и уже для него реализуешь эту функцию. Но тогда его конструктор будет другой.
думал про square matrix. и не хочу. потому что если перемножить разноимённые прямоугольные, получим квадратную. надо постоянно проверять квадратность многих операций, а класс объекту уже не сменишь. это либо будет держаться на туче костылей, либо не моего уровня дело. так что я по старинке швырнусь эксепшном)
Kirill
Хорошее решение.
Ned
есть тут кто-нить ещё?
Ned
Vladislav
м?
Ned
м?
о, американец, ты тут
Ned
слушай, я не понимаю, мы же можем вызывать константные методы для неконст объектов, так?
Ned
и никаких проблем быть не должно
Ned
однако я ловлю тучу проблем при вызове неконстантных методов для неконстантных объектов...
Ned
да и вообще тучу говна при вызовах
Ned
хз почму
Ned
главная проблема вот в чём. я не могу обратиться к this почему-то..
Ned
так, я короче повожусь ещё и напишу если че не так будет
Vladislav
тут, да, чем еще заняться воскресным вечером?)
Ned
нахер понедельничную тоску потому что
Vladislav
не должно быть проблем, а что компилятор пишет?
Ned
да я всё ещё со своими двойными скобками, короче
Vladislav
показывай код)
Ned
не, я чуть позже, плиз
Ned
тут есть что поправить
Vladislav
ok
Ned
итак, есть константный объект
Ned
оператор [] от него возвращает другой константный объект
Ned
оператор [] от второго возвращает константный тип
Ned
так схуяяле нельзя передавать this в первом операторе второму объекту?
Ned
ща буит код
Vladislav
второй объект должен принимать его как const
Ned
http://ideone.com/srjnK3
Ned
вот. смотри
Ned
в строчке 173 обращаемся к константе
Ned
вызывается строчка 135
Ned
объект константный!! оператор тоже константный! генерит константный подобъект
Ned
хуле ему не нравится?!
Ned
this в данном случае воспринимается как const *Matrix this.
Ned
тоесть неконстантный указатель на константный объект
Ned
всё заебись
Ned
даже для row вызывается константный конструктор
Vladislav
Matrix<T> *const _parent это константный указатель на Matrix<T>, а не указатель на константный Matrix<T>
Ned
а так и должно быть
Ned
указатель не должен меняться, а объект должен
Ned
это нормально, чтобы делать например A[0][0] = 0;
Vladislav
ну вот, а у тебя this указывает на объект, который нельзя менять (потому что из константного метода)
Ned
ага, ну ииии....?
Ned
сделать два разных row?
Vladislav
в твоем случае нужно два варианта row: обычный и const_row
Ned
константный и нет?
Ned
вот
Ned
блять
Ned
не хотел этого
Ned
очень
Ned
ааа
Vladislav
да, так же как и итераторы в stl
Vladislav
они тоже идут в двух вариантах из-за этого
Ned
сцуко, ну ладно ладно, спасибо
Ned
ничего, к утру допишу и константный и нет)
Ned
всё взлетит
Ned
а вот про итераторы не знал...
Ned
@isenbaev, я угадаю, если скажу, что ты не спишь потому что у тебя сейчас день?
Vladislav
7 вечера)
Ned
7 вечера)
штаты?
Vladislav
Ага, Калифорния
Ned
Ага, Калифорния
уж не силиконовая ли долина?
Ned
она ж где-то там вродь...
Vladislav
Она
Ned
а чем занимаешься?
Vladislav
Пишу на плюсах в фейсбуке, в отделе рекламной платформы
Yevhen
Пишу на плюсах в фейсбуке, в отделе рекламной платформы
круто. по какой визе изначально в сша приехал?