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