Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Новый участник


Сообщения: 15
Благодарности: 6

Профиль | Отправить PM | Цитировать


Существует неоднозначность операторов в 2-х местах,
в строке
Matrix& operator+=(Matrix const&a){*this=*this+a;return*this;}
и в строке
if(ch==1) Print(A+B);//Сложение

Это связано с тем, что, дейтсвительно, у вас объявлено множество операторов +, хотя и с различными параметрами, но так же у вас объявлена ф-я конвертации в тип double, таким образом компилятор остается в недоумении применять оператор сложения к матрице или преобразовать ее к типу double и затем применить этот оператор.
само же приведение к типу double у вас возврат элемента 0,0 или выброс исключения.
Мне кажется что от этого приведения можно отказаться, а для сохранения функциональности определить ф-ю, скажем так:
double Matrix::ToDouble()
{
if(rows!=1||cols!=1){
throw CMatrixException('d');
}
return (*this)(0,0);
};
Если я не прав, поправте, пожалуйста.

-------
Ничто так не разрушает мечты, как компромисс..


Отправлено: 12:14, 13-04-2011 | #217