我需要检查当前范围中是否存在变量“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
}
答案 0 :(得分:1)
我相信你误解了语言的核心或工具链......方法,类,变量等 - 它们要么“存在”要么“在范围内”。如果你试图实际使用“不在范围内”的任何东西,这是一个很难的错误,并且尝试编译这样的代码通常会破坏。根据局部变量的存在来检查和分支逻辑没有什么意义。我真的认为你有一些过于复杂的东西。如果在方法的“后期代码”中,您只想检查某些事情是否早先发生过 - 为什么不在方法开头创建简单的bool
变量,将其初始化为false
,只有在事情发生的时候才设置为真?然后只检查变量?
话虽如此,虽然无法检查是否定义了局部变量,但完全可以检查类成员是否存在 - 由于模板和SFINAE的一些聪明的技巧。我的意思是 - 您可以测试类X是否定义字段Y或方法Z并在编译时静态获取真/假响应。
您可能需要查看例如:https://stackoverflow.com/a/7687190/717732或https://stackoverflow.com/a/2133273/717732