我有许多不同的矩阵类,它们代表矩阵可以使用的不同类型的存储。例如静态和动态数组,如下所示:
class mat_d
{
float arr[3][4];
}
class mat_s
{
float** arr;
}
所有矩阵类都使用operator()(uint32 r, uint32 c)
访问运算符。显然,它们必须分别为每个班级实施。所有矩阵还具有可应用于它们的函数,例如返回新矩阵的transpose()
。对于所有矩阵,此函数看起来完全相同,因为它使用所有矩阵具有共同点的operator()
。如何在矩阵类中共享函数?
这是我不想做的事情:
virtual .. operator()
的所有矩阵的公共基类将在基本方法中使用,并被不同的存储矩阵覆盖。 (导致虚函数开销)我知道所有信息都在编译时出现,以便编译器知道在哪种情况下使用哪个矩阵类。我现在能想到的唯一解决方案是使用所有基本方法定义一个宏,然后在所有矩阵类中使用该宏,但那真的很难看。