ВУЗ:
Составители:
Рубрика:
94
Эта ошибка связана с невозможностью преобразования объекта
базового класса к производному типу. При использовании операции "*"
происходят два вида преобразования типов:
При передаче параметров (операнды – квадратные матрицы x и z,
преобразуются к типу базового класса). Это преобразование
происходит без ошибок, поскольку объект производного класса
принадлежит одновременно базовому классу. Это называют
принципом подставимости.
При возвращении операцией матрицы-результата и сохранении
результата в объекте QMatrix должно производиться обратное
преобразование – из Matrix в QMatrix. Это преобразование
невозможно, поэтому и возникает ошибка.
Для исправления этой ошибки нужно добавить в базовый класс
Matrix специальный метод ToQMatrix(), который осуществляет
преобразование из типа Matrix в QMatrix:
// метод преобразования объекта класса Matrix в QMatrix
public QMatrix ToQMatrix()
{
int rows = Rows;
QMatrix qm = new QMatrix(rows);
for (int i = 0; i < rows; i++)
for (int j = 0; j < rows; j++)
qm[i, j] = a[i, j];
return qm;
}
В этом методе создается объект производного класса и его элементам
присваиваются значения из элементов объекта базового класса.
. . .
z = ~x;
z.OutputMatrix();
Console.WriteLine("Проверка правильности
обратной матрицы:");
y = (x * z).ToQMatrix();
y.OutputMatrix();
. . .
Эта ошибка связана с невозможностью преобразования объекта
базового класса к производному типу. При использовании операции "*"
происходят два вида преобразования типов:
При передаче параметров (операнды – квадратные матрицы x и z,
преобразуются к типу базового класса). Это преобразование
происходит без ошибок, поскольку объект производного класса
принадлежит одновременно базовому классу. Это называют
принципом подставимости.
При возвращении операцией матрицы-результата и сохранении
результата в объекте QMatrix должно производиться обратное
преобразование – из Matrix в QMatrix. Это преобразование
невозможно, поэтому и возникает ошибка.
Для исправления этой ошибки нужно добавить в базовый класс
Matrix специальный метод ToQMatrix(), который осуществляет
преобразование из типа Matrix в QMatrix:
// метод преобразования объекта класса Matrix в QMatrix
public QMatrix ToQMatrix()
{
int rows = Rows;
QMatrix qm = new QMatrix(rows);
for (int i = 0; i < rows; i++)
for (int j = 0; j < rows; j++)
qm[i, j] = a[i, j];
return qm;
}
В этом методе создается объект производного класса и его элементам
присваиваются значения из элементов объекта базового класса.
. . .
z = ~x;
z.OutputMatrix();
Console.WriteLine("Проверка правильности
обратной матрицы:");
y = (x * z).ToQMatrix();
y.OutputMatrix();
. . .
94
Страницы
- « первая
- ‹ предыдущая
- …
- 92
- 93
- 94
- 95
- 96
- …
- следующая ›
- последняя »
