使用子类C++实例的父类成员函数

使用子类C++实例的父类成员函数,c++,matrix,C++,Matrix,我有一个课程涉及实现两个类,一个用于存储矩阵对象,另一个用于存储SquareMatrix对象。我们必须实现成员函数,才能解出形式为Ax=b的方程,其中A是矩阵,x是我们想要找到的向量,b是已知向量 我在平方矩阵的情况下实现了这一点,因为使用高斯消去法并不太难。这门课程说我们应该使用的方法来解决非方矩阵的情况,就是用“意义转置”来解决a'Ax=a'b。A'A现在是一个平方矩阵,所以这也可以用高斯消去法来解决 我想知道的是,在矩阵解算函数中创建一个SquareMatrix对象,然后使用SquareM

我有一个课程涉及实现两个类,一个用于存储矩阵对象,另一个用于存储SquareMatrix对象。我们必须实现成员函数,才能解出形式为Ax=b的方程,其中A是矩阵,x是我们想要找到的向量,b是已知向量

我在平方矩阵的情况下实现了这一点,因为使用高斯消去法并不太难。这门课程说我们应该使用的方法来解决非方矩阵的情况,就是用“意义转置”来解决a'Ax=a'b。A'A现在是一个平方矩阵,所以这也可以用高斯消去法来解决

我想知道的是,在矩阵解算函数中创建一个SquareMatrix对象,然后使用SquareMatrix成员解算系统是否有效。例如,如果在平方矩阵中

Matrix SquareMatrix::solve(Matrix& b){
    //stuff that solves (*this) * x = b for x and returns x
}
那么我可以在Matrix.cpp中

Matrix Matrix::solve(Matrix& b){
    //make the matrix into a square
    SquareMatrix AtransposeA = (this->transpose())*(*this);

    //update rhs of equation accordingly 
    Matrix Atransposeb = (this->transpose()) * b;

    //Call SquareMatrix solve to solve the problem.
    Matrix x = AtransposeA.solve(Atransposeb);
    return x;
}
所以我通过乘以它的转置,然后调用SquareMatrix的solve函数,使矩阵成为正方形。我对C++比较陌生,而且还没有100%的人能左右继承,所以我不确定这是不是有效的,还是明智的。 我不确定这是否是一个有效的,或明智的做法

在某些情况下,使用派生类来实现父类的函数是有效的


从矩阵中导出平方矩阵是否有意义是另一个考虑因素。要知道这个问题的答案,你需要考虑你的设计,并勾勒出所有的类不变量和成员函数的前后矩阵的条件,然后考虑方矩阵是否能满足所有的要求。

谢谢,因为课程明确地要求我们从矩阵中导出平方矩阵,我们别无选择。虽然我明白你的意思。感谢您澄清在父类中使用派生类是否有效