Я пытаюсь сделать < < вывод всей матрицы, на которую я написал шаблон. Не знаю, почему это не работает, ошибка:Перегрузка выходного потока для печати всей матрицы
error: no match for 'operator[]' (operand types are 'matrix<int' and 'int')
candidate is:
matrix<Comparable> matrix<Comparable>::operator[](matrix<Comparable>&) [with Comparable = int]|
no known conversion for argument 1 from 'int' to 'matrix<int>&'|
, который относится к этой линии: о < < RHS [I] [J]. Я должен перегружать [], а?
matrix.h:
template <typename Comparable>
class matrix
{
private:
size_t num_cols_;
size_t num_rows_;
Comparable **array_;
public:
friend ostream& operator<< (ostream& o, const matrix<Comparable> & rhs);
size_t NumRows();
size_t NumCols();
};
matrix.cpp:
template <typename Comparable>
ostream& operator<< (ostream& o, matrix<Comparable> & rhs){
size_t c = rhs.NumRows();
size_t d = rhs.NumCols();
for (int i = 0; i < c; i++){
for (int j = 0; j < d; j++){
o << rhs[i][j]; //error
}
}
}
template <typename Comparable>
size_t matrix<Comparable>::NumRows(){
return num_rows_;
}
template <typename Comparable>
size_t matrix<Comparable>::NumCols(){
return num_cols_;
}
И, вероятно, не имеет значения, но я реализовал матрицу так:
array_ = new Comparable*[num_rows_];
for (int i = 0; i < num_rows_; i++){
array_[i] = new Comparable[num_cols_];
'o << rhs.array_ [i] [j];' – P0W
Ahh Я вижу, но array_ является частным членом данных. Что мне делать вместо этого? – user3444650
Приведено сообщение об ошибке, которое array_ является приватным. Это работает, если я сделаю это общедоступным, но мне нужно оставить его закрытым. – user3444650