Преобразование класса родителя в класс потомок в C#
У меня есть два класса Polynom и PolynomSon (наследник Polynom). Класс Polynom содержит оператор суммы полиномов. Мне нужно написать оператор суммы для работы с наследником, который будет использовать оператор родителя, поэтому я пишу так:
public static PolynomSon operator +(PolynomSon q, PolynomSon r)
{
Polynom t = new PolynomSon();
t = (Polynom)q + r;
return t as PolynomSon; //так дает null при преобразовании
}
Не получается преобразовать из Polynom в PolynomSon после суммирования. Подскажите, пожалуйста, как исправить, чтобы получилось преобразовать?
Ответы (1 шт):
Polynom t = new PolynomSon();
здесь вызов new PolynomSon() не имеет смысла, так как переменной t сразу же присваивается другое значение.
Невозможно "преобразовать" результат оператора Polynom.+
t = (Polynom)q + r;
в PolynomSon, потому что этот результат не является PolynomSon.
Вам придется написать реализацию сложения, где результатом является PolynomSon.
Или добавить в класс PolynomSon конструктор
public PolynomSon(Polynom p) { ... }
и делать:
return new PolynomSon((Polynom)q + r);