Показать сообщение отдельно
Старый 24.04.2012, 23:41   #1
KingMaks
Знающий
 
Аватар для KingMaks
 
Регистрация: 26.11.2009
Сообщений: 313
Написано 35 полезных сообщений
(для 95 пользователей)
Абстрактный класс и наследование

Собственно есть абстрактный класс
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);
__________________
StimuL
Maks
(Offline)
 
Ответить с цитированием