私が直面している問題の名前をどのようにするかわかりません。だから私は行列のためのテンプレートクラスを持っています。 int、double、その他のもの。私の問題は、私がクラスの異なるインスタンスの型に取り組んで、コンパイルすることができない場合です。ここには、現在のインスタンスに行列を追加するはずのadd関数の定義があります。2種類のテンプレートを同じにする
template <class T>
void Matrix<T>::add(const Matrix &m) {
for (int i = 0; i < this->rows; ++i) {
for (int j = 0; j < this->cols; ++j) {
this->mat[i][j] += m.at(i,j);
}
}
}
Matrix<double>
をMatrix<double>
インスタンスに追加すると
しかし、私はMatrix<int>
Matrix<double>
例えばに追加し、それを動作させることはできません。
Matrix<double> matA(2,2);
Matrix<int> matB(2,2);
matA.add(matB);
コンパイラ(G ++ 4.8は)文句:
error: no matching function for call to ‘Matrix<double>::add(Matrix<int>&)
何この問題を回避することができますか?