友元函数可以分成1.外部函数 2.其他类函数成员作为友元函数
其他的诸如友元函数导致信息不安全的老梗就不多说了,简单说说今天遇到的问题
重复定义问题,出现在 其他类成员作为友元函数的时候
- (1). 在A类的声明中写下函数
- (2). 在A类外给出具体定义 / 在A类声明中直接给出定义都会导致->
- (3). 之后再在目标类中写下 friend void A::function 就会报错“redefined”
1.问题已经解决:如何利用其他类成员函数作为友元函数
(1). 第一个应该先在类A中写下关于“你要怎么用类B中的私有成员”的函数声明
(2). 然后在类外给出具体定义
(3). 最后在在类B中写上准许调用的friend的字样
注意事项:
(1). friend函数声明写在公有部
(2). 具体是用常规对象还是指针对象无所谓
(3). 分在一个文件里还是两个文件里无所谓
(4).最大的问题仅仅是在于函数体到底是写在里面还是写在外面,写在里面就是错的
报错:B中成员由于还未定义,你现在写上怎么操作B成员显然是没有意义的
同时报错:在B中的friend字样后面显示本函数已经被重复定义了
(5).Summary: 函数体到底是写在里面还是写在外面,怎么决定
- 函数想要操作其他类数据成员,但是目前此类还没给出
- 我们写上超前引用声明
- 但是超前引用声明只是允许你在函数参数中出现这个类的对象,那,我想调用这个类的方法或者想要操作一下类里面的数据
- 唯一的方法是我先在函数声明里面写上我要用到这个类的对象
然后等这个类的完整定义给出来以后我再在类外部单独定义具体怎么调用函数或者