[英]Friend function can't access the private variables
我正在尝试重载<<
运算符以显示矩阵,但它表示无法访问我的任何私有成员。
在我的头文件中,我有:
friend ostream& operator<<(ostream& os, const matrix& out);
对于我的私人会员,我有:
private:
int p_rowSize;
int p_rowSize;
vector<vector<double> > p_matrix;
在我的实现文件中,我有以下代码,但不确定我应该如何让它工作:
ostream& operator<<(ostream& os, const matrix& out)
{
for (int i = 0; i < p_rowSize; i++)
{
for (int j = 0; j < p_colSize; j++)
{
cout << "[" << p_matrix[i][j] << "] ";
}
cout << endl;
}
}
它告诉我p_colSize
、 p_rowSize
和p_matrix
在这里都未定义,但在我编写的任何其他函数中都没有定义。
友元函数可以访问数据成员,但由于它仍然是一个自由函数(而不是成员函数),因此您需要使用out.p_rowSize
等指定您正在访问的对象。
ostream& operator<<(ostream& os, const matrix& out)
{
for (int i = 0; i < out.p_rowSize; i++)
{
for (int j = 0; j < out.p_colSize; j++)
{
os << "[" << out.p_matrix[i][j] << "] ";
}
os << endl;
}
return os;
}
一些注意事项:
os
,而不是cout
。return os;
为你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.