-2

以下は私のコードです。私には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つで。なぜ??

4

1 に答える 1

1

あなたは単にすべての場所で前std::に前に付けるのを忘れました。ostream

friend std::ostream& operator<<(std::ostream&, Matrix&);
于 2013-03-26T04:00:26.517 に答える