2012-09-25 189 views
0

我需要检查变量“var1”是否存在于当前范围内。如何检查变量是否在范围内或在C++中

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 
} 
+5

按编译并查找错误 – TJD

+0

所以基本上你要测试它是否有效C++的语法或不?如果你引用的范围以外的变量,你的编译器应该惩罚你。 :) –

+0

我不知道这是否可能,但我真的很想知道为什么你需要这样的事情! –

回答

1

我相信你在语言的核心误解的东西,或者工具链。方法,类变量等等 - 他们要么“存在”和“在范围”或没有。如果您试图实际使用“不在范围内”的任何内容,则这是一个严重错误,尝试编译此类代码通常会中断。根据局部变量的存在检查和分支逻辑是没有意义的。我真的认为你已经过于复杂了。如果在方法的“后面的代码”中,您只想检查是否有更早发生的事情 - 为什么不在该方法的开始处创建简单的bool变量,将其初始化为false,并将其设置为true事情发生了?后来只是检查变量?

说了这么多,而这是不可能的检查局部变量是否定义或没有,这是完全有可能检查类成员是否存在 - 由于与模板和一些聪明的技巧SFINAE。我的意思是 - 您可以测试X类是否定义了字段Y或方法Z,并在编译时静态地获得了真/假响应。

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

相关问题