内容简介:http://stackoverflow.com/questions/41198075/why-cant-inner-class-definitions-use-their-parent
您定义的类型的成员:
class Foo { Foo member; };
原因是这是无限递归的,无限大的对象.但是,我们可以有静态成员:
class Foo { static Foo member; };
我们可以这样做,因为Foo就像一个命名空间; Foo的实例不包含.member,所以没有无限的引用.换句话说,.member属于类,而不是实例.我想做的是非常相似的:
class Foo { class Bar { Foo member; }; };
Foo再次表现为命名空间. Foo的实例实际上是空的.我必须做一个非静态字段吧Foo :: bar;开始获取布局问题.不幸的是,我的编译器不同意( e.g. GCC ):
<source>:3:14: error: field 'member' has incomplete type 'Foo' Foo member; ^~~~~~
由于什么技术原因是不允许的?
很长的故事,这比容许不容易.
下面是一个示例,显示可能有些困难:C可以将嵌套类定义与成员声明相结合,如下所示:
class Foo { class Bar { Foo member; } bar; // <<== Here };
很明显,为什么这个定义是不允许的:不同于一个可以是OK的类定义,成员定义使得大小计算是不可能的.
当然,标准的作者可以允许类定义通过,而不用给编译器作者另外的工作.然而,看起来他们认为允许这个功能是不值得的,所以在声明一个实例的时候,它们并没有使它成为一个例外.
http://stackoverflow.com/questions/41198075/why-cant-inner-class-definitions-use-their-parent
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- iOS 8中自定义UIWindows不能正确旋转
- ApiCloud开发SuperWebView——极光推送不能监听通知内容以及不能跳转的问题
- 有的便宜不能占
- golang不能使用debug
- 影像云,一个不能错失的时代
- 面对“智能校服”不能只看到智能
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Fluent Python
Luciano Ramalho / O'Reilly Media / 2015-8-20 / USD 39.99
Learn how to write idiomatic, effective Python code by leveraging its best features. Python's simplicity quickly lets you become productive with it, but this often means you aren’t using everything th......一起来看看 《Fluent Python》 这本书的介绍吧!