当我不小心写道:
UIViewController tmp*=_currentViewController;
而不是:
UIViewController *tmp=_currentViewController;
我得到一个嵌套函数被禁用的错误。你能解释一下吗?
答案 0 :(得分:2)
你可能已经意识到这一点,但是这个:
UIViewController tmp*=_currentViewController;
被解释为:
UIViewController tmp *= _currentViewController;
是通过乘法运算与LHS的赋值,LHS是名为“tmp”的对象(非指针)的声明。名为“_currentViewController”的对象指针是另一个操作数。
因此,这个更简单的语句会产生相同的错误:
int a *= b;
通常你有类似的东西:
a *= b;
扩展为:
a = a * b;
然而,在这种情况下,LHS不仅仅是“a”,而是声明“int a”。
我的GUESS是因为这个奇怪的LHS值,编译器将此扩展解释为:
int a { return a * b; }
显然是nested function。