C++ 好友功能-can';t访问专用字段C++;

C++ 好友功能-can';t访问专用字段C++;,c++,C++,我刚刚开始学习朋友函数。 我遵循了其中一个教程,但无法使代码正常工作。 我想我犯了不少错误 我的代码: #include <iostream> using namespace std; class Sale { friend ostream& operator << (ostream, const Sale&); int receiptNum; double salesAmt; public: Sale(int,double); }; Sal

我刚刚开始学习朋友函数。 我遵循了其中一个教程,但无法使代码正常工作。 我想我犯了不少错误

我的代码:

#include <iostream>

using namespace std;

class Sale
{
friend ostream& operator << (ostream, const Sale&);
int receiptNum;
double salesAmt;
public:
    Sale(int,double);
};

Sale::Sale(int num,double sale)
{
    receiptNum = num;
    salesAmt = sale;
}

ostream operator << (ostream& out,const Sale aSale)
{
    out << "Sale #" << aSale.receiptNum << " for $ " << aSale.salesAmt << endl;
    return out;
}

int main()
{
    Sale aShirt(1567,39.95);
    cout << aShirt;
    return 0;

}
#包括
使用名称空间std;
大减价
{

friend ostream&operatorfriend函数和您的实现是用不同的签名定义的。因此,它们是不同的(重载)函数:

friend ostream& operator << (ostream, const Sale&);
...
ostream operator << (ostream& out,const Sale aSale) { ... }

friend-ostream&operatorfriend函数和您的实现是用不同的签名定义的。因此,它们是不同的(重载)函数:

friend ostream& operator << (ostream, const Sale&);
...
ostream operator << (ostream& out,const Sale aSale) { ... }

<代码>朋友OsFase&操作符签名不匹配:=“朋友> OfStand运算符<代码> OSoSand运算符,它们被称为C++中的数据成员。签名不匹配:= >代码>朋友OFSUCTS和运算符<代码> OSFANS,它们被称为C++中的数据成员。ostream参数和返回类型。我已经相应地编辑了答案。@我刚刚注意到yoy的ostream参数和返回类型的引用/值不匹配。我已经相应地编辑了答案。
friend ostream& operator << (ostream&, const Sale&);
...
ostream& operator << (ostream& out,const Sale &aSale) { ... }