Показать сообщение отдельно
Старый 03.05.2012, 06:30   #12
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Абстрактный класс и наследование

Ну тут вероятно надо
// Конструктор
public QuadMatrix(long n):base(nn
т.к. в базовом классе нет конструктора по умолчанию и надо вызвать один из существующих.

И учти, что второе наследование не повлияет на функцию Sum т.е. T уже задан первым наследованием. В ней останутся типы RectMatrix. Тут либо отказаться от такого наследования и делать перегруженные методы, либо наследоваться только от Matrix<T>

Можно было бы попробовать сделать вот так:
abstract class Matrix
{
    public abstract 
T Sum<T> (T AT Bwhere T:Matrix;

Но тогда тебе придется работать с классом Activator для создания экземпляров неизвестного типа... так что не знаю что лучше... может самое правильное сделать перегруженную функцию Sum в каждом классе. Т.е. сделать ее не абстрактной, а просто реализовать нужного вида.

abstract class Matrix
{

}

class 
RectMatrix Matrix
{
    public 
RectMatrix Sum(RectMatrix ARectMatrix B)
    {
        
    }
}

class 
QuadMatrix RectMatrix
{
    public 
QuadMatrix Sum(QuadMatrix AQuadMatrix B)
    {
        
    }

__________________
Blitz3d to Unity Wiki

Последний раз редактировалось pax, 03.05.2012 в 08:18.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
KingMaks (03.05.2012)