You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++矩阵处理类如何实现接收两个矩阵并获取其行列数的方法

解决方案

实现思路

  • 你的matrixClass每个实例本身已经通过CreateMat方法给成员变量m_nRows(行数)、m_nCol(列数)赋值,因此只要传入两个matrixClass实例的引用,就能直接读取各自的行列属性
  • 方法可以设计为类的静态成员,避免依赖当前实例的状态,也可以根据后续需求(比如矩阵运算)设计为普通成员方法

步骤1:在matrixClass类中添加方法声明

template<typename T>
class matrixClass {
private:
    unsigned int m_nRows;
    unsigned int m_nCol;
    T* matrix;
public:
    // 你原有已实现的CreateMat方法
    T* CreateMat(unsigned int nRow, unsigned int nCol, T& num);
    
    // 新增:获取两个矩阵行列信息的静态方法
    static void GetTwoMatSize(const matrixClass<T>& mat1, const matrixClass<T>& mat2,
                            unsigned int& mat1Row, unsigned int& mat1Col,
                            unsigned int& mat2Row, unsigned int& mat2Col);
};

步骤2:类外实现该方法

template<typename T>
void matrixClass<T>::GetTwoMatSize(const matrixClass<T>& mat1, const matrixClass<T>& mat2,
                                  unsigned int& mat1Row, unsigned int& mat1Col,
                                  unsigned int& mat2Row, unsigned int& mat2Col)
{
    // 直接读取两个实例的私有成员变量获取行列数
    mat1Row = mat1.m_nRows;
    mat1Col = mat1.m_nCol;
    mat2Row = mat2.m_nRows;
    mat2Col = mat2.m_nCol;
    
    // 若要扩展矩阵运算逻辑(比如判断是否可相乘、可相加)可直接在此处补充
}

使用示例

int main() {
    matrixClass<double> mat1, mat2;
    double initNum = 0;
    mat1.CreateMat(3,4,initNum);
    initNum = 10;
    mat2.CreateMat(4,5,initNum);
    
    unsigned int r1,c1,r2,c2;
    matrixClass<double>::GetTwoMatSize(mat1, mat2, r1, c1, r2, c2);
    // 执行后r1=3、c1=4、r2=4、c2=5
    return 0;
}

补充说明

如果后续这个方法要扩展为矩阵运算方法(比如矩阵加法、乘法),可以去掉static修饰,直接用当前实例作为第一个运算矩阵,只需要传入第二个矩阵参数即可。

内容的提问来源于stack exchange,提问作者Πάνος Ρεβολίδης

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 06:06:01