我有一个用于制作复杂矩阵的继承类(来自父矩阵类)。我们的想法是从父类创建两个对象,用于矩阵的实部和复杂部分。我对如何制作构造函数感到困惑。代码是:
template <class type>
class complexMatrix: public matrix<type>
{
public:
matrix<type> Real;
matrix<type> Complex;
complexMatrix() //Default Constructor
{
matrix<type> Real;// Call the matrix class constructor by default
matrix<type> Complex;
}
complexMatrix(int rows,int columns, string name) //Creat a complex matrix
{
string name_real,name_complex;
name_real = name;
name_complex = "i"+name;
matrix<type> Complex(rows,columns,name_complex); // Create Imaginary matrix
matrix<type> Real(rows,columns,name_real);
}
void complexrandomize()
{
Real.matrix<type>::randomize();
Complex.matrix<type>::randomize();
}
};
此代码显然不起作用。在我找到here on stackoverflow的答案中,我理解我可以从父级初始化两个对象,然后使用Real(行,列,名称)调用它。然而,在我的情况下,这将无法工作,因为我需要重载()运算符。所以这个解决方案是不可能的。我能想到的另一个解决方案是在构造函数中创建Real和Complex对象,并手动复制Real和Complex成员对象中的所有值。这听起来不是一个很好的解决方案。
有没有人有更好的方法解决这个问题?
答案 0 :(得分:1)
使用初始化列表:有关详细信息,请参阅here。
template <class type>
class complexMatrix: public matrix<type>
{
public:
matrix<type> Real;
matrix<type> Complex;
complexMatrix() : Real(),Complex() // Call the matrix class constructor by default
{
}
};