首先的一个友元函数类A。因此,在最初声明B类之前,您需要在B类中使用B类的前向声明。
其次,在定义了两个类之后,您将需要定义函数(即使用来自两个类的变量 - 这里是朋友函数)。否则我们可能会面临错误。
例如
#include<iostream>
using namespace std;
class alpha1;
class alpha2
{
public:
void put_bata(int a,int b);
};
void alpha2 :: put_bata(int a,int b)
{
alpha1 net;
net.roll=a;
net.id=b;
net.get_data();
}
class alpha1
{
int roll;
int id;
public:
void get_data(void)
{
cout<<roll<<endl<<id<<endl;
}
friend void alpha2 :: put_bata(int a,int b);
};
int main()
{
alpha2 gamma;
gamma.put_bata(5,6);
return 0;
}
会告诉我们错误,put_bata尝试他们即使我们有一流的正向的声明,但是下面给出的代码将只是做工精细定义之前访问卷和id。
#include<iostream>
using namespace std;
class alpha1;
class alpha2
{
public:
void put_bata(int a,int b);
};
class alpha1
{
int roll;
int id;
public:
void get_data(void)
{
cout<<roll<<endl<<id<<endl;
}
friend void alpha2 :: put_bata(int a,int b);
};
void alpha2 :: put_bata(int a,int b)
{
alpha1 net;
net.roll=a;
net.id=b;
net.get_data();
}
int main()
{
alpha2 gamma;
gamma.put_bata(5,6);
return 0;
}
但是,如果在FB(A&一)我使用访问变量一种用于例如,a.variable;那将是非法的,因为A尚未确定。 – ipkiss
@ipkiss是的,因为如果你在头类声明中需要完整的定义。但是如果你在一个单独的实现文件中完成它,你可以包含完整的声明A. – juanchopanza