2011年(17)
分类: C/C++
2011-08-25 14:08:49
代码大致可以简化成下面的形式:
selectionChangeSlot(const char* name,bool bAdd)
{
.......
std::string name = name;
.......
int id = getIDByName(name);
if(bAdd){
doSomeThingBy(id);
}else{
doOtherThingBy(id);
}
}
恐怕所有人都难以预料到自己会犯下这种错误,但是今天在我这确实出现了。惭愧之余,反思出现的原因,
原本可能是为了调试方便,或者后续利用std::string的一些方便特性,做了这样一个似乎有道理的变换,但是错就错在命名的惯性使然,神使鬼差又给std::string 命了个同样的名称。 但是这样一来,编译却能够通过,只是无论怎么传值,执行操作的name都是空的。
记录这次错误鞭策自己,以后写代码时更加小心,避免这些因为简单、习惯、大意,造成的错误。