c++的友元,不会,进来看看吧

来源:百度知道 编辑:UC知道 时间:2024/05/15 03:14:22
#include<iostream>
using namespace std;
class A{
int a;
public:
A(int a1 = 1){a = a1;}
friend int GetSum(A a1);
};

class B{
int b;
public:
B(int b1 = 2){b = b1;}
int GetSum(A a1);
};
int B::GetSum(A a2){
return b+a2.a;
}

void main(){
A a;
B b;
cout<<b.GetSum(a)<<endl;
}

怎么不行啊,错误是 :
error C2248: 'a' : cannot access private member declared in class 'A'
这是怎么了啊,我搞了半天也不懂
问题补充:课本上说 友元函数也可以是另外一个类的成员函数 。 我就想用下一个类的函数是另外友元函数, 这样怎么就不对呢?
也不行,说 error C2653: 'B' : is not a class or namespace name 。再到前面声明了class B也是不行

#include<iostream.h>

class A;//需要在之前声明下类A

class B
{
int b;
public:
B(int b1 = 2)
{b = b1;}
int GetSum(A a1);

};

class A
{
int a;
public:
A(int a1 = 1)
{a = a1;}
friend int B::GetSum(A a1);
};

int B::GetSum(A a1)
{
return b+a1.a;
}

void main(){
A a;
B b;
cout<<b.GetSum(a)<<endl;
}

(你一问多投了,刚才有回答过了~!)

friend int GetSum(A a1); 改成:

friend int B::GetSum(A a1);

你那样写,默认情况是GetSum(A a1)是全局函数。

friend int GetSum(A a1); 改成:
friend class B;