【问题标题】:Symbol could not be resolved C++符号无法解析 C++
【发布时间】:2012-09-29 17:58:27
【问题描述】:

我在我的一种方法中遇到了这个错误:“符号 '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' 中声明一个类型,编译器会发出 'Cannot resolve 'pa' symbol' 错误。 'findAtomByLexCode' 要么返回指向 'PredefinedAtom*' 的指针,要么返回 NULL。

【问题讨论】:

  • 符号定义是否被接受为 C++ 中的条件表达式??
  • @g-makulik 在“一些代码”部分,如果它不为空,我会返回“pa”

标签: c++ eclipse symbols


【解决方案1】:

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

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

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

【讨论】:

  • 是的,它是(除非我打错了,但整体方法有效)。
  • 我知道我见过这个但不记得布尔细节。谢谢
猜你喜欢
  • 2011-12-22
  • 2018-11-11
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
  • 2021-02-04
  • 2016-12-31
相关资源
最近更新 更多