我遇到过这样的错误:在我的一种方法中,'符号'pa'无法解决'。 代码:
PredefinedAtom* PredefinedSymbolTableCollection::findAtomByLexCode(u_int lex_code) {
// PredefinedAtom* pa; // <== ACCEPTED
for(u_int i = 0; i < pst.size(); i++) {
if((PredefinedAtom* pa = pst[i]->findAtomByLexCode(i)) != NULL){// <== BAD
// some code
}
}
}
如果我在'if'范围之外声明一种类型的PredefinedAtom,则代码编译/运行。但是,如果我尝试在'if'中声明一个类型,编译器会发出'无法解析'pa'符号'错误。 'findAtomByLexCode'返回指向'PredefinedAtom *'或NULL的指针。
答案 0 :(得分:3)
您可以在if
语句的条件下定义变量,但不能在表达式中定义它。你需要这样写:
if (PredefinedAtom* pa = pst[i]->findAtomByLexCode(i)) {
...
}
pa
的值转换为bool
以确定采用哪个分支。