関数ポインタのベストプラクティス配列

1の#include <iostreamの>
 2の#include <fstreamの>
 3の#include < 文字列・H>
 4  使って 名前空間STDを、
5つの 
6  クラスの学生。
7  
8のtypedef のボイド(CALL)(学生*、int型);
9  
10  クラスの学生
 11  {
 12  公共13      文字列名;
14      int型の年齢;
15      文字のセックス。
16  公衆17      学生(){}
 18学生(){}
 19  }。
20  
21  空隙 write_object(スチューデント*学生、int型のサイズ)
 22  {
 23      ofstreamのをOFS(" text.bat " )。
24      であれば(OFS)
 25      {
 26          のためには、int型 i = 0 ; iは、サイズ<; iは++ 27          {
 28              CIN >>学生[I] .nameの>>学生[I] .age >> 学生[I] .sex。
29              ofs.write(reinterpret_castは< constの CHAR *>(&学生[i])と、はsizeof(学生[I]));
30          }
 31      }
 32      他の
33      {
 34          COUT << " 失敗書き込み" << ENDL。
35      }
 36      ofs.close()。
37  }
 38  
39  空隙 read_object(スチューデント*学生、int型のサイズ)
 40  {
 41      はifstreamのIFS(" text.bat " )。
42      であれば(IFS)
 43      {
 44          のためにINT I = 0;私は、サイズ<; Iは++ 45          {
 46              ifs.read(reinterpret_castは< CHAR *>(&学生[i])と、はsizeof (学生[I]))。
47          }
 48      }
 49      他の
50      {
 51          COUT << " 失敗書き込み" << ENDL。
52      }
 53      ifs.close()。
54  }
 55  
56  空隙 show_students(スチューデント*学生、int型のサイズ)
 57  {
 58      のためのint型 I =0 ; iは、サイズ<; iは++ 59      {
 60          COUT <<学生[I] .nameの<< " " <<学生[I] .age << " " <<学生[I] .sex << ENDL。
61     }
 62 }
 63 64 の#if 0
 65 空隙クリア(スチューデント*学生は、int型のサイズ)
 66 {
 67 のためにint型 i = 0 ; iは、サイズ<; iは++ 68     {
 69          のmemset(reinterpret_castは< ボイド *>(&   
         0はsizeof (学生[I]))。
70      }
 71  }
 72  #endifの 
73  
74  のint main()の
 75  {
 76人の      生徒の生徒[ 3 ]。
77      INTのサイズ= はsizeof(学生)/ はsizeof(学生[ 0 ])。
78      
79      CALL *配列[ 5 ] = {write_object、show_students、read_object、show_students、クリア}。
80      
81      のためにint型 i = 0 ; iは< 5 ; iは++します82      {
 83          配列[I](学生、サイズ)。    
84      }
 85      
86      戻り 0 ;
87 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/running-world/p/11355519.html