注册 登录
编程论坛 C++教室

std::ostream& operator<<(std::ostream& os, const Student stu),这个函数

wengbin 发布于 2016-03-23 21:15, 4076 次点击
程序代码:
std::ostream& operator<<(std::ostream& os, const Student& stu)//只要将&去掉,下面的代码就能正常跑,可是会创建临时变量,想做成直接引用的....
{
    using std::setw;
    using std::setfill;
    os << setw(stringWeith) << setfill(' ') << stu.name//报错成员name不可访问
        << setw(numberWeith) << setfill(' ') << stu.ID
        << setw(charWeith) << setfill(' ') << stu.sex << std::endl;
    return os;
}
2 回复
#2
rjsp2016-03-24 09:29
stream必须是引用,它应该没有拷贝或赋值功能。
“成员name不可访问”你可以将这个函数声明为Student的友元(friend)
#3
wengbin2016-03-24 15:27
回复 2楼 rjsp
谢谢r版主,我想到原因了,应该是我没改友元函数申明时的函数原型......

[此贴子已经被作者于2016-3-24 15:31编辑过]

1