我在C ++中声明有问题。
在Matrix.hpp中
template <typename T, int R, int C>
class Matrix {
public:
void inc();
friend istream& operator>>(istream&, Matrix<T, R, C>&);
}
在Matrix.cpp中
template <typename T, int R, int C>
void Matrix<T, R, C>::inc() {
for(int i = 0; i < this->matrix.size(); i++) {
for(int j = 0; j < this->matrix[i].size(); i++) {
this->matrix[i][j] += 1;
}
}
}
template <typename T, int R, int C>
istream& operator>>(istream &input, Matrix<T, R, C> &M) {
for(int i = 0; i < R; i++) {
vector < T > row;
for(int j = 0; j < C; j++) {
T temp;
input >> temp;
row.push_back(temp);
}
M.matrix.push_back(row);
}
return input;
}
在main.cpp中,我尝试这样做
Matrix<int,4,2> newMatrix;
cin >> newMatrix;
newMatrix.inc();
我有错误:
undefined reference to `operator>>(std::istream&, Matrix<int, 4, 2>&)
undefined reference to `Matrix<int, 4, 2>::inc()
因此,我了解到,我不好地声明了这些方法,并且程序中有“两种不同”的方法,但是我不知道该如何修复。