歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C++可復用代碼:命令行控制模塊

大二第一學期的數據結構課程設計中,我寫的是一個族譜管理系統,用C語言寫的win console application,黑咕隆咚的,但是程序控制方式我采用的是類似linux shell那樣的命令行模式。後來覺得實現命令行控制的那部分代碼可以復用,所以在大二下學期用C++對這個模塊進行了改寫,寫出了我自認為可復用的代碼。

這學期,臨近考試月我們有操作系統課程設計,要求在linux下模擬實現一個命令解釋器,則上面提到的那個命令行控制模塊的代碼正好派上了用場。下面是我寫的命令解釋器的main.cpp代碼,這個shell只有9條命令。

CmdNode<ShellFunSet> shellCmds[9] = {//該數組的每一個元素對應該shell的一條命令

    {"pwd",&ShellFunSet::pwd},//{"命令字符串",執行該命令的函數}

    {"dir",&ShellFunSet::dir},

    {"cd",&ShellFunSet::cd},

    {"newdir",&ShellFunSet::newdir},

    {"deldir",&ShellFunSet::deldir},

    {"exit",&ShellFunSet::exit},

    {"rename",&ShellFunSet::rename},

    {"find",&ShellFunSet::find},

    {"date",&ShellFunSet::date}

  };

  ShellFunSet osFunHolder;

  CmdControl<ShellFunSet> cmdModul("YeShizhe@",9,osFunHolder,shellCmds);

  cmdModul.run();//進入命令行控制模式

以上代碼中,可復用代碼由兩部分組成:

結構體 CmdNode<T>

類 CmdControl<T>

復用該代碼的方法就是根據需要編寫自己的T類,然後將它作為以上倆物的持有類。

我知道直到現在為止我什麼都沒講清楚,但請耐心看下去,下面是ShellFunSet的代碼,

該類不屬於可復用代碼的范疇。

class ShellFunSet{

 public:

  bool pwd(string order[]);

  bool dir(string order[]);

  bool cd(string order[]);

  bool newdir(string order[]);

  bool deldir(string order[]);

  bool exit(string order[]);

  bool date(string order[]);

  bool rename(string order[]);

  bool find(string order[]);

};

Copyright © Linux教程網 All Rights Reserved