以下は私のコードです。私には3つの友達機能があります:
#include <iostream>
#ifndef MATRIX_H
#define MATRIX_H
class Matrix
{
friend Matrix operator++(Matrix&);
friend Matrix operator--(Matrix&);
friend ostream& operator<<(ostream&, Matrix&);
private:
int dim;
int** mat;
public:
Matrix(int d);
void set(int, int, int);
int get(int, int);
Matrix operator+(Matrix&);
Matrix operator-(Matrix&);
Matrix operator*(Matrix&);
~Matrix();
};
Matrix operator++(Matrix &m)
{
for (int i = 0; i < m.dim; i++)
{
for (int j = 0; j < m.dim; j++)
{
int val = m.get(i,j);
m.set(i,j,++val);
}
}
return m;
}
Matrix operator--(Matrix &m)
{
for (int i = 0; i < m.dim; i++)
{
for (int j = 0; j < m.dim; j++)
{
int val = m.get(i,j);
m.set(i,j,--val);
}
}
return m;
}
ostream& operator<<(ostream &os, Matrix &m)
{
for (int i = 0; i < m.dim; i++)
{
for (int j = 0; j < m.dim; j++)
{
os << m.get(i,j) << ' ';
}
os<<endl;
}
return os;
}
#endif
どちらの場合も、パブリック関数であると私が信じている「m.get(i、j)」については文句を言っていません...演算子<<ではアクセスできないと言って「m.dim」について文句を言っていますが、最初の2つで。なぜ??