相关疑难解决方法(0)

嵌套if中的范围歧义

假设有一个Foo类,比如

class Foo {
public:
  void bar();
  operator bool() const { return true; }
};
Run Code Online (Sandbox Code Playgroud)

然后就可以做到

if(Foo foo = Foo())
{
  if(Foo foo = Foo())
  {
    foo.bar();
  }
}
Run Code Online (Sandbox Code Playgroud)

现在我无法掌握这里的范围分辨率(我希望重新声明foo的编译器错误).

我希望foo.bar()在第二个foo上执行(它的范围是"更接近")但是我保证它实际上是与第一个foo不同的对象吗?此外,它们是否各自独立处置(它们的析构函数被称为)在它们各自的if块的末尾?

c++ scope

2
推荐指数
1
解决办法
574
查看次数

标签 统计

c++ ×1

scope ×1