如何根据参数选择变量?

时间:2015-02-21 19:12:34

标签: c++

我正在进行一项作业,其中,我收到一个字符串列表作为函数中的参数。基于列表中包含的字符串,我必须对记录进行一些处理。列表中包含的字符串对应于Record类中的成员变量。但是,每次调用doProcessing()时,list参数可能包含不同数量的字符串。以下是我的代码的简化版本:

  class Record{
            string str1;
            string str2;
            ...
            string strn;
            }; // end Record class
 class Process{
          void doProcessing(Record* rec, set<string> strList){
           if(strList.find("abc") == rec->str1){
              //do something
              }
            if(strList.find("def") == rec->str2){
              //do something
              }
               ........
           }
       }; // end Process class

这里,每次调用doProcessing时strList都不同。它可能只包含1个字符串或n个字符串,具体取决于具体情况。

我相信设计本身存在缺陷。请建议一个好的设计来处理这种情况。我拥有所有类,因此在设计更改方面没有任何问题。

1 个答案:

答案 0 :(得分:0)

  1. 将函数强制转换为类不会使过程代码面向对象 为什么doProcessing不是免费功能?

  2. 当参数不是可选参数时,使用引用而不是指针,也不是数组。

  3. 考虑遍历该集,并using a switch for string-matching

  4. 您确定记录中的数据类型是否正确,您是否只是陷入stringly-typed programming的陷阱? 另请考虑使用std::tuplestd::array

  5. 还有一个但是:std::set.find返回一个迭代器。