dle 的声明放在作用域中。
当编译器查找 Inner2 类中的定义所用的名字时,Inner2 类和 Outer 类中的所有名字都在作用域中。val 的使用(出现在 val 的声明之前)是正确的:将该引用绑定到 Inner2 类中的数据成员[不大理解这一段是什么意思%>_<%]。同样,Inner2::process 成员函数体中对 Outer 类的 handle 的使用也正确,当编译 Inner2 类的成员的时候,整个 Outer 类在作用域中。
使用作用域操作符控制名字查找
可以使用作用域操作符访问handle的全局版本:
void process(const Outer &out)
{
::hadle(out);
}