繁体   English   中英

友元函数无法访问私有变量

[英]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_colSizep_rowSizep_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;
}

一些注意事项:

  1. 您应该输出到os ,而不是cout
  2. 你忘记从函数中返回一个值,所以我添加了return os; 为你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM