ChineseNumber 2021-06-16 12:14 采纳率: 100%
浏览 307
已采纳

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;
}
  • 写回答

2条回答 默认 最新

  • qzjhjxj 2021-06-16 12:44
    关注

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

    在第48行末尾添加  ‘}'  

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示