为什么方法不同?

时间:2018-12-28 16:23:22

标签: c++

我在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()

因此,我了解到,我不好地声明了这些方法,并且程序中有“两种不同”的方法,但是我不知道该如何修复。

0 个答案:

没有答案