是否可以在两个模板参数之间找到表达式的类型? 我创建了一个C++语言来处理任何类型的矩阵,我希望能够在两个不同类型的矩阵之间进行基本运算。

是否可以在两个模板参数之间找到表达式的类型? 我创建了一个C++语言来处理任何类型的矩阵,我希望能够在两个不同类型的矩阵之间进行基本运算。,c++,matrix,C++,Matrix,假设我有一个int类型的矩阵a和一个double类型的矩阵B 当我们将这两个矩阵相加时,我们应该得到一个由int+double(在这种情况下,为了避免数据丢失,应该首选double)生成的矩阵C 我正在使用一个有两种类型的模板:T1和T2来处理不同类型的矩阵,并且我尝试使用typeid来获取返回矩阵的类型。但是因为typeid不能与T1和T2一起工作(如果我理解正确的话),所以我被卡住了 模板矩阵和运算符+(矩阵矩阵1,矩阵2){ 如果(Matrix1.GetCol()!=Matrix2.Get

假设我有一个int类型的矩阵a和一个double类型的矩阵B

当我们将这两个矩阵相加时,我们应该得到一个由int+double(在这种情况下,为了避免数据丢失,应该首选double)生成的矩阵C

我正在使用一个有两种类型的模板:T1和T2来处理不同类型的矩阵,并且我尝试使用typeid来获取返回矩阵的类型。但是因为typeid不能与T1和T2一起工作(如果我理解正确的话),所以我被卡住了

模板矩阵和运算符+(矩阵矩阵1,矩阵2){
如果(Matrix1.GetCol()!=Matrix2.GetCol()| | Matrix1.GetRows()!=
Matrix2.GetRows()){
投掷(除不同尺寸外);
}
矩阵*结果=新矩阵(Matrix1.GetRows(),Matrix1.GetCol());
for(unsigned int iRow=0;iRowSetElement(Matrix1.GetElement(iRow,iCol)+Matrix2.GetElement(iRow,iCol),iRow,iCol);
}
}
返回*结果;
}

是否有可能使它工作或是我坚持用特定类型来返回矩阵?< /p> < p>问C++:“代码> T1+T2:

结果会是什么?
template<class T1, class T2>
Matrix<decltype(std::declval<T1>() + std::declval<T2>()>&
operator+(Matrix<T1> Matrix1, Matrix<T2> Matrix2);
模板
母体&
运算符+(矩阵Matrix1,矩阵Matrix2);

是未赋值表达式的类型
e
;具有类型
T
(此函数不得出现在可能评估的上下文中)。

我可能会将其设置为类型特征矩阵。。但看起来很棒:)@xaxxon绝对;)请注意,
Matrix*result=new矩阵(Matrix1.GetRows(),Matrix1.GetCol())。。。返回*结果很可能会导致内存泄漏。您不应该返回引用,而应该按值返回,然后将
result
更改为
Matrix result=Matrix(Matrix1.GetRows(),Matrix1.GetCol())