如何在C++中检查变量是否在作用域中



我需要检查变量"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,并仅在发生了事情时将其设置为true?然后再检查变量?

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

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

最新更新