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[]);

};

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/83394c5ec77756a40108edccc6a71ec2.html