读书人

怎样声明两个类互为友元类,该如何解决

发布时间: 2012-09-19 13:43:53 作者: rapoo

怎样声明两个类互为友元类
怎样声明两个类互为友元类
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; 只是声明了一个类型,其具体的成员未知
[解决办法]
探讨
引用:
可以的,但是在看到B类完整定义前,请不要调用其方法.

这句话我不理解

我原来的例子没有调用其方法呀,只是用了B中的变量

[解决办法]
在声明之后,定义之前,类为不完整类型,只能用于指向该类型的指针或引用或者用于声明(不是定义)使用该类型做为形参类型或者返回类型的函数。

读书人网 >C++

热点推荐