有一个虚基类,派生类中重载基类的成员函数,并且派生类中增加了两个友元函数,为什么定义了一个基类指针,它不能指向派生类啊。比如A* p; p=new B;报错
可能是友元类只和B是友元,和A不是,如果生成了A的指针,那么友元访问的时候就找不到函数地址。
所以编译器拒绝这种实例化。
我个人感觉友元是一种比较苟且的语法,和面向对象的思想是对立的,只是有时候使用比较方便。
通常大部分时候是能避免友元的使用的,只是相对会繁琐一点。
如果要解决这个问题,开源通过接口来实现友元提供的功能。
是用的public方式继承吗?