符号无法解析C ++

时间:2012-09-29 17:58:27

标签: c++ eclipse symbols

我遇到过这样的错误:在我的一种方法中,'符号'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的指针。

1 个答案:

答案 0 :(得分:3)

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

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

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