歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++可復用代碼:命令行控制模塊

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

日期:2017/3/1 10:04:39   编辑:Linux編程

大二第一學期的數據結構課程設計中,我寫的是一個族譜管理系統,用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