在子类中构造父对象

时间:2014-11-16 00:04:21

标签: c++ class inheritance operator-overloading

我有一个用于制作复杂矩阵的继承类(来自父矩阵类)。我们的想法是从父类创建两个对象,用于矩阵的实部和复杂部分。我对如何制作构造函数感到困惑。代码是:

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成员对象中的所有值。这听起来不是一个很好的解决方案。

有没有人有更好的方法解决这个问题?

1 个答案:

答案 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
  {
  }
};