0

我需要检查当前范围内是否存在变量“var1”。

somefunction()
{

     ...
     ....
     {
          ......
          string var1("");
          ...
          // if i check var1..it should be in scope
          // something like inScope(var1)..return true if it is in scope else false
     }
     // if i check var1..it should be out of scope
     // something like inScope(var1)..return true if it is in scope else false
}
4

1 回答 1

1

我相信您误解了语言或工具链的核心内容。方法、类、变量等——它们要么“存在”,要么“在范围内”。如果您尝试实际使用“不在范围内”的任何内容,这是一个硬错误,并且尝试编译此类代码通常会中断。根据局部变量的存在来检查和分支逻辑几乎没有意义。我真的认为你把一些事情复杂化了。如果在您的方法的“后期代码”中您只想检查之前是否发生过某些事情 - 为什么不在bool方法的开头创建简单变量,将其初始化为false,并仅在事情发生时将其设置为 true ? 然后检查变量?

话虽如此,虽然无法检查是否定义了局部变量,但完全可以检查类成员是否存在- 由于模板和 SFINAE 的一些巧妙技巧。我的意思是-您可以测试类 X 是否定义了字段 Y 或方法 Z 并在编译时静态地获得真/假响应。

您可能要检查例如:https ://stackoverflow.com/a/7687190/717732或https://stackoverflow.com/a/2133273/717732

于 2012-09-25T18:45:30.750 回答