C++友元函数无法访问私有成员

C++友元函数无法访问私有成员

问题描述:

友元函数访问私有成员时出现无法访问的现象,函数是两个类的友元函数,其中一个能访问另一个不能访问。

在VS2019中出现此问题,网上搜了些类似删除using namespace std;之类,没有解决

 

#include<iostream>

using namespace std;

class bear_paw
{
private:
    double weight, price;
public:
    bear_paw(double w, double p) { weight = w; price = p; }
    friend  int  Compare( const bear_paw& A, const fish& B);
};

class fish
{
private:
    double weight, price;
public:
    fish(double w, double p) { weight = w; price = p; }
    friend  int  Compare( const bear_paw& A, const fish& B);
};

int Compare(const bear_paw& A, const fish& B)
{
    if ((A.weight * A.price) > (B.weight * B.price)) return 1;
    else return 0;
}

int main()
{
    double w1, p1, w2, p2;
    if (w1 <= 0.0 && p1 <= 0.0 && w2 <= 0.0 && p2 <= 0.0)
    {
        throw w1, p1, w2, p2;
    }
    try
    {
        cin >> w1 >> p1 >> w2 >> p2;
        bear_paw A(w1, p1);
        fish B(w1, p2);
        Compare(A, B);
        if (Compare(A, B) == 1) cout << "选择熊掌" << endl;
        else cout << "选择鱼" << endl;
    }
    catch (double)
    {
        cout << "请输入有效数字" << endl;
        cin >> w1 >> p1 >> w2 >> p2;
}

在第4行,添加 类鱼的声明:class fish;

在第48行末尾添加  ‘}'  

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m