как я могу перегрузить оператор "+", чтобы можно было получить сумму двух узлов двоичного дерева поиска, учитывая то, что тип я у них сделал произвольным, но если будет тип Int у узлов, то тогда можно сложить, а если другой тип, то нельзя.
Вот код:
class Node<T>
{
internal T value;
public static Node<int> operator +(Node<int> A, Node<int> B)
{
return new Node<int>(A.value + B.value);
}
public int Balance
{
get
{
if (Left == null && Right == null)
return 0;
else if (Left == null && Right != null)
return 0 - Right.Height;
else if (Left != null && Right == null)
return Left.Height;
return (Left.Height - Right.Height);
}
private set { }
}
public int Height
{
get
{
if (Left == null && Right != null)
return 1 + Right.Height;
else if (Left != null && Right == null)
return 1 + Left.Height;
else if (Left != null && Right != null)
{
if (Left.Height >= Right.Height)
return Left.Height + 1;
else
return Right.Height + 1;
}
else
return 0;
}
private set
{
}
}
Я хочу
IntNode : Node<int>
, а сделать это прямо в Node<T>
Мне выводит такую ошибку:
Тип одного из параметров бинарного оператора должен быть вмещающим.
сделать так, чтобы эти оператором можно было воспользоваться только если тип значения узла Int
Невозможно. Это невозможно даже в C++ с его текстовыми шаблонами формата "найти-заменить" (оператор будет доступен, но при компиляции вывалится 10КБ текста ошибок в потрохах инклюдов).
Если класс имеет разные члены в зависимости от параметров, то это не один класс. Вряд ли от этого принципа отступятся.
не использовать для этого отдельный новый класс IntNode : Node<int>
, а сделать это прямо в Node<T>
Много вариантов:
Expression
с оператором, скомпилировать.Чистого варианта нет. Возможно, когда-нибудь будет, но я бы не сильно надеялся, что это случится скоро: у задачи Exploration: Shapes and Extensions нет ни статуса, ни майлстона (даже "X.0").
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите пожалуйста как брать текст только из первой пары <a></a>
Допустим, есть некоторая программа, которая что то делает с базойПользователи могут запускать ее на разных машинах
Как называется кнопка для работы с dataGridView те