如何在C ++中检查变量是否在范围内

时间:2012-09-25 18:29:23

标签: c++ scope

我需要检查当前范围中是否存在变量“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
}

1 个答案:

答案 0 :(得分:1)

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

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

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