我正在用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)
是否有可能使其正常工作,或者我坚持为返回的矩阵使用特定类型吗?