提问人:Julienchz 提问时间:10/30/2023 更新时间:10/30/2023 访问量:79
C++ 矩阵类的体系结构:继承还是专用化?
Architecture of C++ matrix classes: inheritance or specialisation?
问:
我想定义一个类:将简单和经典的方法应用于任何矩阵()。template <class T, std::size_t M, std::size_t N> class Matrix
std::array<std::array<T, N>, M> m_data;
然后我想参加专门的课程,例如:.理想情况下,我希望能够在特定类中使用第一个类的泛型方法。为此,我正在考虑创建一个具有遗产的模板。问题是,例如,要使用 I 必须转换 中返回的值,这是我宁愿避免的。 在实践中是完全等价的,所以使用类专用化似乎是合适的,但是你必须重写所有方法,要么复制一些代码,要么创建一个非专用类的实例,我想要一些特定维度的特定方法(例如旋转)在每个相应的方法中。template <class T> class Matrix<T, 2, 2>
class <class T> class Matrix2x2 : public Matrix<T, 2, 2>
class Matrix<T, M, N>::transpose()
Matrix2x2
Matrix2x2
Matrix2x2<T> and Matrix<T, 2, 2>
我尝试过使用继承,它有效,但我有很多代码重复,我想重构所有代码。 什么是最好的设计?有没有更好的解决方案?
谢谢你的帮助。
答: 暂无答案
评论
vec<2>
x
y
requires
class Matrix2x2
Matrix<T,2,2>
Matrix
this
transpose()