我在稍后发现的另一篇文章中以一般化的方式介绍了这个主题:Operator overloading
但具体来说,这是一小段代码:
class wordchecklist
{
string name,type;
unsigned int stats;
};
我想要做的是重载输出操作符,以便以下代码工作
修改(请注意,它包含私有成员,所以我更喜欢通过创建某种成员函数来实现这一目标):
ofstream data(database.txt,ios::app);
data<<wordchecklist;
data.close();
以便我的database.txt文件包含:
mywordchecklistname mywordchecklisttype mywordcheckliststats
输入操作符也一样......
答案 0 :(得分:3)
您必须定义非成员函数:
std::ofstream &operator <<(std::ofstream &stream, const wordchecklist &data)
{
stream << data.name << " " << data.type << " " << data.stats << std::endl;
return stream;
}
对::operator >>
执行相同操作。
ProTip:在标识符中使用CamelCaps
或under_scores
,以使您的类具有可读名称。