Существует ли какой-либо способ динамического или прекомпиляционного имени метода или функции в Java или C ++ на основе используемых обобщений или шаблона? Вот код для рисования идеи:
Java:
class Adder<T, R> {
add"T"(T t);
add"R"(R r);
}
...
obj = new Adder<MyClass, ClassTwo>();
obj.addMyClass(myObject);
obj.addClassTwo(objectTwo);
Более конкретный пример: векторное пространство, определенное в наборе Matrix, в вещественном наборе, определило умножение матриц, которое возвращает матрицу (Matrix X Matrix), и реальное умножение, которое также возвращает матрицу (Real X Matrix), с различные реализации. e.g.:
intereface VectorSpace<T, R> {
...
T multiply"T" (T arg0, T arg1);
T multiply"R" (T arg0, R arg1);
}
...
class RealMatrixVectorSpace implements VectorSpace<Matrix, Real> {
Matrix multiplyMatrix (Matrix arg0, Matrix arg1) { ... }
Matrix multiplyReal (Matrix arg0, Real arg1) { ... }
}
Но векторное пространство можно определить с помощью других входных данных, то, что я пытаюсь определить для программы, использующей эту общую концепцию.