Не слишком практично, но все же интересно.
Имея некоторый абстрактный вопрос о матричном умножении, я быстро реализовал матрицу для целых чисел, а затем проверил свои предположения.
И здесь я заметил, что просто матрица int не годится, если я иногда хочу использовать ее с десятичной или двойной. Конечно, я мог бы попытаться просто разыграть все, чтобы удвоить, но это не удобный способ.
Продолжаем, предполагая, что у нас может быть набор объектов, которые мы можем добавлять и умножать - почему бы не использовать их в моей матрице?
Итак, после того, как я подумал, что это будет класс Matrix, я столкнулся с тем, что универсальный T не может использоваться, мне нужно, чтобы он поддерживал некоторый интерфейс, который мог бы добавлять и умножать.
И проблема в том, что я мог переопределить операторы в своем классе, но я не мог представить интерфейс, который бы поддерживал операторы. И у меня есть операторы встроенных типов, но по-прежнему нет интерфейса над ними.
Что бы вы сделали в таком случае, если не хотите дублировать тело рабочего класса? Обертки и неявное кастинг мне мало помогли, меня интересует красивое решение.
Спасибо.