我的代碼:我的ostream和istream的友元函數不能訪問私有類成員
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 << "\nDisplay 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;
}
爲主。 cpp
#include "matrix.h"
#include <iostream>
using namespace std;
int main()
{
Matrix a;
cout << "Matrix a: " << a << endl;
system("pause");
return 0;
}
錯誤:
- 構件 「矩陣行::」(在第3行matrix.h聲明「)是不可訪問
- 構件 」矩陣::欄「(在第3行matrix.h聲明「)是不可訪問
- 構件‘矩陣陣列::’(在第3行matrix.h聲明」)是不可訪問
- 二進制「< <」:沒有操作員發現它採用類型「矩陣」的右邊的操作數
- '的ostream':不明確的符號
- '的IStream':不明確的符號
我在做什麼錯? :(
**編輯:。我editted問題給予MCVE例如像巴里建議,並且也去掉using namespace std
像斯拉瓦建議我仍然得到同樣的錯誤
請提供[最小,**完整* *和可驗證的示例](http://www.stackoverflow.com/help/mcve)。 Matrix是一個命名空間嗎? – Barry
我發佈的是我的確切代碼。我唯一遺漏的部分是使用「...」的其他函數@Barry – ChewingSomething
您的矩陣類不包含''?或者關閉'};'? –
Barry