首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

小弟我想在两个类里分别声明彼此的友元函数 ,这样做为什么不行

2012-03-21 
我想在两个类里分别声明彼此的友元函数 ,这样做为什么不行#includeiostream#includecstdlibusingnames

我想在两个类里分别声明彼此的友元函数 ,这样做为什么不行
#include   <iostream>
#include   <cstdlib>
using   namespace   std;
class   a;
class   b;
   
class   a{
        int   n;
        public:
                void   changeb(b*,int);
                friend   void   b::change(a*,int);
        };
class   b{
        int   n;
        public:
            void   b::change(a*,int);
                friend   void   a::changeb(b*,int);
        };
        void   b::change(a*   h,int   s){
        h-> n=s;
}        
void   a::changeb(b*   h,int   s){
        h-> n=s;
}        
        int   main(){
                a   x;
                b   y;
                x.changeb(&y,100);
                y.change(&x,100);
                return   0;
        }        
                 


[解决办法]
在a内b还只是个空框架..哪来的函数.
所以不行.
[解决办法]
规定:声明一个类的成员函数为友元时,必须此类已经完整定义。
你要么别用友元,要么把整个类作为友元。
单个成员函数作为友元,本来就没有太大意义。
[解决办法]
还可以根据类的相互关系来考虑是否采用嵌套类的形式来实现

或者干脆用类指针
[解决办法]
友员是一种授权。A声明B是自己的友员意思是,B可以访问A,而不是A可以访问B。
如果要想让A类可以访问B了类,一定要在B类中将A类声明为自己的友员才行!
[解决办法]
建议你修改一下两个类的职责,如果有需求互相声明友元,证明关系比较混乱.一般是一个友元都最好不要用的.

热点排行