【发布时间】:2019-06-09 09:23:24
【问题描述】:
我正在使用以下语法在结构内重载插入运算符 (
struct Address{
string street;
string cross;
int suite;
friend ostream &operator <<(ostream &oss, const Address &other){
oss<<"street: "<<other.street<<"cross: "<<other.cross<<"suite: "<<other.suite;
return oss;
}
};
我看到,只有当我将函数声明为 struct 'Address' 的朋友时,我的代码才会编译。据我了解,当需要访问类的私有成员时,朋友功能很有用。但是,由于在结构中所有成员都是公共的,因此不需要将 '
有没有人可以澄清一下在这里声明'
【问题讨论】:
-
1) "但是,因为在一个结构中所有成员都是公共的" 可以在
struct中拥有private成员。 2) 是的,在 this 的情况下,不需要将函数作为friend。 -
@AlgirdasPreidžius 请在答案部分回答,不要在这里
-
CppCon 2018:Dan Saks “结交新朋友”youtube.com/watch?v=POa_V15je8Y
-
@LightnessRacesinOrbit 我的评论,按原样,不是一个体面的答案。体面的答案需要更好的格式,而不是那么简短。目前,我只是懒惰,以这些方式改进它。
-
@AlgirdasPreidžius 您不必发布答案,因此如果您认为自己不能写完整的答案,您可以不发布任何内容!但是把它放在这里并不是解决这个问题的方法。谢谢