__Christopher 2021-04-22 11:12 采纳率: 0%
浏览 74

用c++如何实现一个模板去执行多个含有相似的两套功能的不同目的的接口?

标题有点绕,解释下。
比如现在有20台机器,每台机器的功能有:重启,关机,数据显示,设置电压,导出数据,获取日志等。

现在的问题是,每个功能都分部分机器执行和全部机器执行,我在写代码的时候,有时候会写了全部执行的,却忘了改部分执行的。

今天突然想到了模板,在代码块高度类似的条件下,可不可以用模板或者类似的可以达到一套代码,多地复用,避免遗漏的目的呢?

界面用的mfc里,我贴一小段代码

// 导出机器信息
void ExportDevInfo()
{
    // 1 CFileDialog类创建并打开csv文件
    // 2 设置csv文件的表头的列名(首行的字段)
    //   2.2 开始导出信息,此处动作分全部执行和部分执行
         2.2.1 全部导出
               pos = gDlgPtr->gDevList.GetFirstSelectedItemPossition();
                if(pos == NULL) // pos为空表示未选
                {
                     //不选中,设置为对全部机器执行
                     //获取总机器设备数目
                     int totalDev= gDevList.GetItemCount();
                     // 对全部行的机器执行操作
                     {操作}
                }
                else //选中部分
                {
                     while(pos)
                     {
                         //pos为行索引,不断向前移动
                         int item = gDevList.GetNextSelectedItem(pos);
                         // 对选中的机器进行操作
                        {操作}
                     }
                }
                   
        
}

{操作} 里的代码基本是一模一样的。

现在的问题是:
比如导出信息功能,函数的前面部分是创建打开一个文件,再分部分和全部执行
如果设置电压功能,函数前面区分部分和全部,然后再进行TCP连接机器

我的初衷是将这些针对两套操作的函数,合并在一个函数或者模板里。但是现在有点无从下手。

我看了同事的一个函数实现,是把执行部分的代码块封装成一个函数,然后在全部操作和部分操作的分支里调用。

  • 写回答

6条回答 默认 最新

  • lemon-l 2021-04-22 11:40
    关注

    不行吧,模板一般是操作相同,但是操作目标的类型不同。你这种感觉可以用策略设计模式

    评论

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?