Вероятно, это повторяющийся вопрос, однако я не уверен, как его искать, и я пока не смог ничего найти.Предположим, что у меня есть два класса, которые выглядят так:
class MyMatrix : public MyAbstract {
using MatrixType = Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>;
MatrixType A, B;
public:
...
MatrixType product() { return A * B; }
...
}
и
class MyDiagonal : public MyAbstract {
using VectorType = Eigen::Matrix<double, Eigen::Dynamic, 1>;
VectorType A, B;
public:
...
VectorType product() { return A.cwiseProduct(B); }
...
}
Все функции в обоих классах одинаковы, но второй класс обрабатывает только диагональные матрицы, поэтому они могутхраниться как векторы.Можно ли объединить эти два класса в один, используя, например, шаблон для выбора типа переменных и соответствующей операции (матричное или компонентное умножение)?