我正在尝试编写重载的插入和运算符操作符,但函数无法访问类Money的私有成员 . 我有“include namespace std;”和“#include”但它不会让我访问私人会员(美元和美分) .
ostream & operator<<(ostream &osObject, Money &right)
{
osObject << "Amount of money: $" << right.dollars << ".";
osObject << right.cents;
return osObject;
}
istream &operator>>(istream &isObject, Money &right)
{
isObject >> right.dollars;
isObject.ignore();
getline(isObject, right.cents;
return isObject;
}`
头文件:
#pragma once
class Money{
// Friends
friend ostream & operator<<(ostream, Money);
friend istream & operator>>(istream, Money);
private:
int dollars;
int cents;
void simplify();
//Some other stuff...
我收到的错误如下:语法错误:缺少';'在'&''ostream'之前:'朋友'在日期声明中不允许缺少类型说明符int假定 . C不支持default-int
2 回答
你的功能定义是
你的原型是
这些不一样,因为第一个使用ostream引用参数,第二个使用普通的ostream对象 . 你需要做这些匹配:
juanchopanza 已经在他的评论中给出了答案 . 万一你想在行动中看到它:
运算符参数ostream和istream中缺少参考符号 .