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

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条)

报告相同问题?

悬赏问题

  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 乘子法解约束最优化问题的matlab代码文件,最好有matlab代码文件
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误
  • ¥100 反编译微信小游戏求指导
  • ¥15 docker模式webrtc-streamer 无法播放公网rtsp
  • ¥15 学不会递归,理解不了汉诺塔参数变化