首页新闻找找看学习计划

C++的友元声明顺序问题

0
悬赏园豆:20 [待解决问题]

代码的要求是B中的私有fun作为A的友元函数,能访问A中的私有元素,然后B中要包含A的对象,但是由于友元声明问题,只能声明指向A的指针
我希望能不用指针,而是直接使用A的对象,怎么修改?
如果有学习C++的大佬,交个朋友

 1 #include <iostream>
 2 //声明A,B中要使用A的指针
 3 class A;
 4 class B {
 5     friend class A;
 6 private:
 7     A* pa;//使用指针
 8     void fun();//能访问A中私有成员的函数
 9 public:
10     B();
11     void sss();//调用fun()的接口
12 };
13 //再来定义A,使用友元声明
14 class A {
15 private:
16     int i;
17     int j;
18     friend void B::fun();
19 };
20 
21 void B::fun() {
22     pa->i = 8;
23     std::cout << pa->i << std::endl;
24 }
25 
26 B::B() : pa(new A) {}
27 
28 void B::sss() {
29     fun();
30 }
31 
32 int main()
33 {
34     B b;
35     b.sss();
36     return 0;
37 }
Yuzero的主页 Yuzero | 菜鸟二级 | 园豆:216
提问于:2019-10-25 17:41
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册