友元函数访问私有成员时出现无法访问的现象,函数是两个类的友元函数,其中一个能访问另一个不能访问。
在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;
}