C++友元函数问题,类的成员函数无法访问私有成员

class X
{
public:
friend bool Y::ifelse(X&);
private:
int a;
int b;
};

class Y
{
public:
bool ifelse(X& temp)
{
return temp.a > temp.b ? true : false;
}
};

以上是代码,在VS2013当中会报错,提示如下:

 改成下面的代码 就能执行了。。vc6编译通过。。

#include <iostream>
using namespace std;
class X; //这里要前导声明
class Y
{
public:
 bool ifelse(X& temp);  
};

class X
{
public:
friend bool Y::ifelse(X&);
private:
int a;
int b;
};
 
bool Y::ifelse(X& temp)  
{
 return temp.a > temp.b ? true : false;
}
 
int main()
{  
 X x;
 Y y;
 if (y.ifelse(x)) cout<<"it is true"<<endl;
 else cout<<"it is false!"<<endl;
 return 0;
}

追问

是可以通过编译,但是为什么在类的内部定义函数就汇报错呢?
而且虽然可以通过编译,但是仍然会有:
2 IntelliSense: 成员 "X::b" (已声明 所在行数:15,所属文件:"xxx.h") 不可访问
1 IntelliSense: 成员 "X::a" (已声明 所在行数:14,所属文件:"xxx.h) 不可访问
这两个IntelliSense提示,这是为什么呢?求解惑。

温馨提示:答案为网友推荐,仅供参考
相似回答