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

C++ C++;结构";不允许使用不完整的类型“;,c++,arrays,struct,C++,Arrays,Struct,有人知道这个错误是什么意思吗?当我试图在结构中定义数组时,为什么会发生这个错误 struct test{ int idk[] = { 1,2,3 }; }; 为什么数组idk是不完整类型或其他类型 提前谢谢 附言。 我需要这个,这样我就可以从测试结构访问这些数组 array bound cannot be deduced from an in-class initializer 因此,将代码段更改为 struct test{ int idk[3] = { 1,2,3 }; 成功编

有人知道这个错误是什么意思吗?当我试图在结构中定义数组时,为什么会发生这个错误

struct test{
    int idk[] = { 1,2,3 };
};
为什么数组idk是不完整类型或其他类型

提前谢谢

附言。 我需要这个,这样我就可以从测试结构访问这些数组

 array bound cannot be deduced from an in-class initializer
因此,将代码段更改为

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

成功编译的结果。

当在局部范围(例如在函数体中)中声明变量时,您可以这样做,编译器不会抱怨,它会推断您指的是一个包含3个元素的int数组

void someFunc()
{
    int idk[] = { 1,2,3 }; // Ok, so idk is in fact a int[3];
    // Do whatever work...
}
当在类或结构声明中执行相同的操作时,编译器不想为您推断,因此基本上,您需要更加严格

出于完全的原因,您可以在其他地方看到这里()

因此,要使其发挥作用,您需要这样做:

struct test 
{
    int idk[3] = { 1,2,3 };
};
至于为什么人们可能不喜欢这个问题,这是一个很平常的问题,实际上谷歌的任何搜索都会给出答案。编译器本身会返回错误,只要搜索错误,大部分时间都会为您找到答案

基本上,这类问题是告诉这里的社区,在提出问题之前,你没有做任何研究

使用visual studio编译器时,会创建以下错误: 错误C2997“test::idk”:无法从类内初始值设定项推断数组绑定

这是非常明确的


Mick

Use
intIDK[3]={1,2,3}大多数情况下,数组大小可以从初始值设定项推断出来。但这对作为类成员的数组不起作用。对于这些,您必须明确说明大小。与变量定义不同,非静态类数据成员的默认成员初始值设定项不是该成员可以拥有的唯一初始值设定项,因此它不适合推断数组大小。我有Visual Studio,但出于某种原因,我没有得到该错误。我做过研究,但每次人们讨论结构数组时。但是谢谢你的解释。