C++友元函数问题,类的成员函数无法访问私有成员
classX{public:friendboolY::ifelse(X&);private:inta;intb;};classY{public:boolifelse(X&...
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当中会报错,提示如下: 展开
{
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当中会报错,提示如下: 展开
1个回答
2014-12-08
展开全部
改成下面的代码 就能执行了。。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提示,这是为什么呢?求解惑。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询