嵌套函数被禁用 - 为什么我会收到此错误消息?

时间:2010-02-12 04:15:15

标签: objective-c

当我不小心写道:

UIViewController tmp*=_currentViewController;

而不是:

UIViewController *tmp=_currentViewController;

我得到一个嵌套函数被禁用的错误。你能解释一下吗?

1 个答案:

答案 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

相关问题