Собственно есть абстрактный класс
abstract class Matrix
{
// Абстрактная функция сложения
public abstract Matrix Sum(Matrix A, Matrix B );
}
|
Дочерний класс
class RectMatrix : Matrix
{
Vector[] data;
// Конструкторы
public RectMatrix(long n)
{
data = new Vector[n];
for (int i = 0; i < n; i++)
{
data[i] = new Vector(n);
}
}
public RectMatrix(long n, long m)
{
data = new Vector[m];
for (int i = 0; i < m; i++)
{
data[i] = new Vector(n);
}
}
// Функция сложения
public override RectMatrix Sum(RectMatrix A, RectMatrix B )
{
RectMatrix response = new RectMatrix(A.data.GetLength(0), A.data[0].size());
if ((A.data.GetLength(0) == B.data.GetLength(0)) && (A.data[0].size() == B.data[0].size()))
{
for (int i = 0; i < A.data.GetLength(0); i++)
{
for (int j = 0; j < A.data[0].size(); j++)
{
response.data[i][j] = A.data[i][j] + B.data[i][j];
}
}
return response;
}
else
{
Console.WriteLine("Матрицы невозможно сложить!");
return response;
}
}
}
|
Наследую класс и нужно, чтоб функция сложения принимала и возвращала уже наследуемый класс, то есть RectMatrix, но выдает ошибку, как же тогда уже в наследуемом классе изменить метод суммы, чтоб она принимала RectMatrix и возвращала результат типа RectMatrix
Главная функция:
RectMatrix Amatrix = new RectMatrix(3, 2);
RectMatrix Bmatrix = new RectMatrix(3, 2);
RectMatrix Cmatrix = new RectMatrix(3, 2);
Cmatrix = Cmatrix.Sum(Amatrix, Bmatrix);
|