我想创建一个类来管理矩阵,我遇到了构造函数的问题。 目标是找到调用Matrix objet的构造函数的最简单方法,因为它知道某些构造函数具有与保持清晰相同的头文件。 这是我所尝试的想法:如何在声明/参数相同时重载构造函数/函数?
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
其实如此我不能超载的构造,我唯一看到的是使用的模板,但只对那些特殊情况则我不知道该怎么办。
解决方案
最后,我决定做一个抽象类是这样的:
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
和其他类将只是有用的为他们构造函数(S)
最后,我们可以调用这样的构造函数:
Mat id;
Mat::Scale scale(2, 2, 2);
// ...
听起来像是你应该看的继承。 –
但类将是相同的,它是正确的构造函数的变化,它是奇怪的创建例如“MatrixScale”,这是相同的“矩阵”只是一个不同的构造函数 – Zone31
请澄清你的问题,因为它不清楚你想要什么。 '矩阵'和'矩阵'是不同的类型,在这里不会发生过载。 –
Logman