繁体   English   中英

C ++结构“不允许使用不完整的类型”

[英]C++ struct “Incomplete type is not allowed”

有谁知道此错误的含义以及当我尝试在结构内定义数组时为什么会发生此错误?

struct test{
    int idk[] = { 1,2,3 };
};

为什么数组idk的类型不完整?

提前致谢。

PS。 我需要这样做,以便可以从测试结构访问这些数组。

在局部范围内声明变量时(例如,在函数体中),您可以执行此操作,并且编译器不会抱怨,这将意味着您表示一个包含3个元素的int数组。

void someFunc()
{
    int idk[] = { 1,2,3 }; // Ok, so idk is in fact a int[3];
    // Do whatever work...
}

当在类或结构声明中执行相同的操作时,编译器不想为您推断出这一点,因此,基本上,您需要更加严格。

关于其原因的完整原因,您可以在此处看到其他地方( 无法从成员变量中的initializer-string推断数组大小的原因是什么? )。

因此,要使其正常工作,您需要这样做:

struct test 
{
    int idk[3] = { 1,2,3 };
};

至于为什么人们可能不喜欢这个问题,那么这是一个平凡的问题,实际上,在Google中进行任何搜索都会得到答案。 编译器本身将排除该错​​误,并且在大多数情况下,只需进行搜索即可找到答案。

基本上,这种问题是在告诉社区您在提出问题之前没有进行任何研究。

使用Visual Studio编译器时,它会产生以下错误:错误C2997'test :: idk':无法从类内初始化程序推导出数组绑定

这是非常明确的。

米克

 array bound cannot be deduced from an in-class initializer

因此将代码段更改为

struct test{
int idk[3] = { 1,2,3 };

结果编译成功。

暂无
暂无

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

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