繁体   English   中英

为什么这不能推断出数组大小?

[英]Why doesn't this deduce array size?

我想知道为什么这在结构或 class 中不起作用,但通常在结构或 class 之外声明时起作用。

enum options { OPTION1, OPTION2};

int main()
{
    options opts[] = { OPTION1, OPTION2}; // WORKS


    struct DOGG
    {
        //options opts[] = { OPTION1, OPTION2}; // DOESN'T WORK
        options opts2[2] = { OPTION1, OPTION2}; // WORKS
    };
}

为什么在class中不能推算出大小呢? 这对我来说似乎很奇怪,并且想了解为什么会这样。

数据成员可能以不同的方式初始化。 假设我们有:

struct DOGG
{
    options opts[] = { OPTION1, OPTION2 };            // default member initializer
    DOGG() {}                                         // default member initializer applied
    DOGG(int) : opts { OPTION1 } {}                   // member initializer list applied, default member initializer ignored
    DOGG(long) : opts { OPTION1, OPTION1, OPTION1} {} // member initializer list applied, default member initializer ignored
};

那么opts的大小应该是多少呢? 这是无效的,因为数组的大小必须在编译时已知。 所以数组的大小不会从默认成员初始化器(或成员初始化器列表)中推导出来。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM