0

我遇到了这个错误:在我的一种方法中无法解析符号'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。

4

1 回答 1

3

您可以在语句的条件中定义变量,if但不能在表达式中定义它。你需要这样写:

if (PredefinedAtom* pa = pst[i]->findAtomByLexCode(i)) {
    ...
}

的值pa被转换以bool确定采用哪个分支。

于 2012-09-29T18:10:17.507 回答