怎样声明两个类互为友元类
怎样声明两个类互为友元类
void showA(B &b){b.bi} //怎么提示error,声明了class B;不行吗,一定要看到B的定义?
#include <iostream>
using namespace std;
class B;
class A
{
friend class B;
int ai;
void showA(B &b){b.bi} //怎么提示error,声明了class B;不行吗,一定要看到B的定义?
};
class B
{
friend class A;
int bi;
void showB(A &a){a.ai}
};
void main()
{
system("pause");
}
[解决办法]
的确是这样,必须看见class B的完整定义
- C/C++ code
#include <iostream> using namespace std; class B; class A { friend class B; int ai; void showA(B &b);};class B { friend class A; int bi; void showB(A &a){a.ai} }; void main() { system("pause"); } //将定义放于此即可void A::showA(B &b){ b.bi;}
[解决办法]
void showA(B &b){b.bi} //怎么提示error,声明了class B;不行吗,一定要看到B的定义?
放在B定以后再定义
因为class B; 只是声明了一个类型,其具体的成员未知
[解决办法]
[解决办法]
在声明之后,定义之前,类为不完整类型,只能用于指向该类型的指针或引用或者用于声明(不是定义)使用该类型做为形参类型或者返回类型的函数。