gpt4 book ai didi

c++ - 友元函数无法访问私有(private)数据成员

转载 作者:行者123 更新时间:2023-11-30 02:39:37 25 4
gpt4 key购买 nike

我正在尝试编写重载的插入和执行运算符,但这些函数无法访问 Money 类的私有(private)成员。我有“include namespace std;”和“#include”,但它不允许我访问私有(private)成员(美元和美分)。

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' : 不允许在日期声明中使用 'friend'缺少类型说明符 - 假定为 int。 C++ 不支持 default-int

最佳答案

你的函数定义是

ostream & operator<<(ostream &osObject, Money &right)

你的原型(prototype)是

friend ostream & operator<<(ostream, Money);

它们是不一样的,因为第一个采用 ostream 引用参数,第二个使用普通的 ostream 对象。您需要使这些匹配:

friend ostream & operator<<(ostream &, Money &);

关于c++ - 友元函数无法访问私有(private)数据成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29615337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com