我正在进行一项作业,其中,我收到一个字符串列表作为函数中的参数。基于列表中包含的字符串,我必须对记录进行一些处理。列表中包含的字符串对应于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个字符串,具体取决于具体情况。
我相信设计本身存在缺陷。请建议一个好的设计来处理这种情况。我拥有所有类,因此在设计更改方面没有任何问题。
答案 0 :(得分:0)
将函数强制转换为类不会使过程代码面向对象
为什么doProcessing
不是免费功能?
当参数不是可选参数时,使用引用而不是指针,也不是数组。
考虑遍历该集,并using a switch
for string-matching。
您确定记录中的数据类型是否正确,您是否只是陷入stringly-typed programming的陷阱?
另请考虑使用std::tuple
或std::array
。
还有一个但是:std::set.find
返回一个迭代器。