将cout重载为非朋友助手操作员

时间:2014-09-12 17:06:43

标签: c++

我已经获得了这些指令,这些指令已经让我完成了循环。我需要重载插入操作符以打印出对象数据库。但是,它声明上传者必须是非朋友帮助者操作员。

如果是这样的话,如果它不是朋友,它怎么能访问私人数据库呢?如果可以,我为什么要避免使用朋友'?

以下是逐字说明的内容:

  • 一个帮助器非友元操作符,它将存储的字符串插入左ostream操作数 此运算符在字符串前面加上插入的编号并增加该编号

我对C ++有些新意,所以我非常感谢你的帮助。

1 个答案:

答案 0 :(得分:3)

如果它不是朋友,则需要使用对象的公共接口(ergo,您需要编写对象的公共接口以包含插入操作符所需的访问权限)。

例如,你可能会这样做:

class thing { 
    std::string name; 
public:
    std::string get_name() const { return name; }
    // ...
};

std::ostream &operator<<(std::ostream &os, thing const &t) { 
    return os << t.get_name();
}

请注意,我肯定推荐这是一个好习惯 - 相反,我认为经常更好的想法让插入运算符成为朋友。但是,如果你在课堂上而且你被禁止以正确的方式做事,你就会做你所拥有的......