重载ifstream运算符>>无法访问班级私人会员

时间:2017-09-02 14:29:20

标签: c++ class operator-overloading ifstream

我试图重载ifstream运算符>>,但我一直收到错误:" ********在此上下文中是私有的",其中*** ***是成员变量的名称。我的程序使用一个类Matrix,它有行,列和2D数组的变量来保存值。我成功地重载了ostream<<运营商,但ifstream给了我更多的麻烦。非常感谢任何帮助!

(为了澄清,我的目标是从.txt文件中读取文本到我的矩阵中,这就是我使用ifstream而不是istream的原因)

这是我的Matrix.h文件:(简化版本,至少)

class Matrix;
ostream& operator<<(ostream& out, const Matrix& potato);
ifstream& operator>>(istream& in, Matrix& potato);

class Matrix
{
    //constructors etc.

    //streams
    friend ostream& operator<<(ostream& out, const Matrix& potato);
    friend ifstream& operator>>(istream& in, Matrix& potato);

    private:
    double ** matrix; // the matrix array
    unsigned rows; // # rows
    unsigned cols; // # columns
};

以下是ifstream运算符的实现&gt;&gt;来自Matrix.cpp:

ifstream& operator>>(ifstream& in, Matrix& potato)
{
    double temp;
    string strDouble;
    for (int a = 0; a < potato.rows; ++a)
    {
        for (int b = 0; b < potato.cols; ++b)
        {
            in >> strDouble;
            temp = stod(strDouble);
            potato.matrix[a][b] = temp;
        }
    }

    return in;
}

0 个答案:

没有答案