我想創建一個類來管理矩陣,我遇到了構造函數的問題。 目標是找到調用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