首页 > 试题广场 >

下面建立友元的尝试有什么错误? a. class snap

[问答题]
下面建立友元的尝试有什么错误?
a. 
class snap {
         friend clasp;
         ...
     };
    class clasp { ... };
b. 
class cuff {
     public:
             void snip(muff &) { ... }
             ...
     };
    class muff {
           friend void cuff::snip(muff &};
           ...
     };
c. 
class muff {
              friend void cuff::snip(muff &);
     };
     class cuff {
     public:
               void snip(muff &) { ... }
     };

推荐
a. 友元声明如下:
friend class clasp;
b. 这需要一个前向声明,以便编译器能够解释void snip (muff&):
   snip(muff &):
   class muff;      // forward declaration
   class cuff {
   public:
        void snip(muff &) { ... }
        ...
   };
   class muff {
   friend void cuff::snip(muff &);
   ...
};
c. 首先,cuff类声明应在muff类之前,以便编译器可以理解cuff::snip()。其次,编译器需要muff的一个前向声明,以便可以理解snip(muff &)。
   class muff;     // forward declaration
   class cuff {
   public:
        void snip(muff &) { ... }
        ...
   };
   class muff {
         friend void cuff::snip(muuff &);
         ...
};

发表于 2018-09-03 20:49:20 回复(0)