小编Gui*_*ard的帖子

是否可以找出两个模板参数之间的表达式类型?

我正在用C ++创建一个库来处理任何类型的矩阵,并且我希望能够在两个不同类型的矩阵之间进行基本操作。

假设我有一个整数类型的矩阵A和一个双精度类型的矩阵B。

当我们将这两个矩阵相加时,我们应获得以下类型的矩阵C:int + double(在这种情况下,应首选double以避免数据丢失)。

我正在使用两种类型的模板:T1和T2来处理矩阵的不同类型,并且我尝试使用typeid来获取返回矩阵的类型。但是由于typeid不适用于T1和T2(如果我理解正确的话),我陷入了困境。

template<class T1, class T2> Matrix<T1> & operator+(Matrix<T1> Matrix1, Matrix<T2> Matrix2) {
    if(Matrix1.GetCol() != Matrix2.GetCol() || Matrix1.GetRows() != 
Matrix2.GetRows()){
        throw(EXC_DifferentDimensions);
    }

    Matrix<T3> * result = new Matrix<T3>(Matrix1.GetRows(), Matrix1.GetCol());

    for(unsigned int iRow = 0; iRow < Matrix1.GetRows(); iRow++){
        for(unsigned int iCol = 0; iCol < Matrix1.GetCol(); iCol++){
            result->SetElement(Matrix1.GetElement(iRow, iCol) + Matrix2.GetElement(iRow, iCol), iRow, iCol);
        }
    }
    return *result;
}
Run Code Online (Sandbox Code Playgroud)

是否有可能使其正常工作,或者我坚持为返回的矩阵使用特定类型吗?

c++ matrix

3
推荐指数
1
解决办法
68
查看次数

标签 统计

c++ ×1

matrix ×1