我试图重载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;
}