My code:
matrix.h
#include <iostream>
class Matrix {
private:
int row;
int col;
int **array;
public:
Matrix();
friend std::ostream& operator<<(ostream& output, const Matrix& m);
};
matrix.cpp
#include "matrix.h"
#include <iostream>
Matrix::Matrix()
{
row = 3;
col = 4;
array = new int*[row];
for (int i = 0; i < row; ++i)
{
array[i] = new int[col];
}
for (int i = 0; i < row; ++i)
{
for (int j = 0; j < col; ++j)
{
array[i][j] = 0;
}
}
}
std::ostream& operator<<(std::ostream& output, const Matrix& m)
{
output << "
Display elements of Matrix: " << std::endl;
for (int i = 0; i < m.row; ++i)
{
for (int j = 0; j < m.col; ++j)
{
output << m.array[i][j] << " ";
}
output << std::endl;
}
return output;
}
main.cpp
#include "matrix.h"
#include <iostream>
using namespace std;
int main()
{
Matrix a;
cout << "Matrix a: " << a << endl;
system("pause");
return 0;
}
Error:
- member "Matrix::row" (declared at line 3 matrix.h") is inaccessible
- member "Matrix::col" (declared at line 3 matrix.h") is inaccessible
- member "Matrix::array" (declared at line 3 matrix.h") is inaccessible
- binary '<<' : no operator found which takes a right-hand operand of type 'Matrix'
- 'ostream': ambiguous symbol
- 'istream': ambiguous symbol
What am I doing wrong? :(
**Edited: I've editted the question to give a MCVE example like Barry suggested, and also removed using namespace std
like Slava recommended. I'm still getting the same error.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…