内容简介: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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
嵌入式系统软件设计中的常用算法
周航慈 / 2010-1 / 24.00元
《嵌入式系统软件设计中的常用算法》根据嵌入式系统软件设计需要的常用算法知识编写而成。基本内容有:线性方程组求解、代数插值和曲线拟合、数值积分、能谱处理、数字滤波、数理统计、自动控制、数据排序、数据压缩和检错纠错等常用算法。从嵌入式系统的实际应用出发,用通俗易懂的语言代替枯燥难懂的数学推导,使读者能在比较轻松的条件下学到最基本的常用算法,并为继续学习其他算法打下基础。 《嵌入式系统软件设计中的......一起来看看 《嵌入式系统软件设计中的常用算法》 这本书的介绍吧!