2 qq 20961937 qq_20961937 于 2015.06.14 21:46 提问

C++派生类加上友元函数后,基类指针就不能指派生了,有什么解决办法
有一个虚基类,派生类中重载基类的成员函数,并且派生类中增加了两个友元函数,为什么定义了一个基类指针,它不能指向派生类啊。比如A* p;   p=new B;报错

2个回答

ycg514230
ycg514230   Rxr 2015.06.14 21:55

可能是友元类只和B是友元,和A不是,如果生成了A的指针,那么友元访问的时候就找不到函数地址。
所以编译器拒绝这种实例化。
我个人感觉友元是一种比较苟且的语法,和面向对象的思想是对立的,只是有时候使用比较方便。
通常大部分时候是能避免友元的使用的,只是相对会繁琐一点。
如果要解决这个问题,开源通过接口来实现友元提供的功能。

a1193561652
a1193561652   Rxr 2015.06.14 22:00

是用的public方式继承吗?

qq_20961937
qq_20961937 是的
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片