我想创建一个类来管理矩阵,但构造函数遇到了问题。目的是找到调用 Matrix 对象的构造函数的最短方法,因为知道某些构造函数具有与保持清晰相同的标题。这是我试图得到的想法:
Matrix id; // create identity matrix
Matrix scale(x, y, z); // create directly a scale matrix
Matrix translation(x, y, z) // create a translation matrix
...
在这里,所有参数都是float
s 所以我不能重载构造函数,我看到的唯一一件事是使用模板,但仅适用于那些特殊情况,我不知道该怎么做。
解决方案
最后我决定做一个这样的抽象类:
class _Mat
{
public :
virtual ~_Mat(void) = 0;
// ...
}
class Mat : public _Mat
{
public :
Mat(void);
virtual ~Mat(void);
class Scale : public _Mat
{
public :
Scale(float x, float y, float z);
vitual ~Scale(void);
// ...
}
// ...
}
所有都将被定义_Mat
,另一个类将对其构造函数有用
最后,我们可以像这样调用构造函数:
Mat id;
Mat::Scale scale(2, 2, 2);
// ...