gpt4 book ai didi

C++ 结构 "Incomplete type is not allowed"

转载 作者:搜寻专家 更新时间:2023-10-31 00:58:38 27 4
gpt4 key购买 nike

有谁知道这个错误的含义以及当我试图在结构中定义数组时为什么会出现这个错误?

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

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

提前致谢。

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

最佳答案

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

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

当在类或结构声明中做同样的事情时,编译器不想为你推导它,所以基本上,你需要更严格。

要了解完整的原因,您可以在此处 ( What is the reason for not being able to deduce array size from initializer-string in member variable? ) 以及其他地方查看。

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

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

至于为什么人们可能不喜欢这个问题,这是一个普通的问题,实际上在谷歌中的任何搜索都会产生答案。编译器本身会消除错误,大多数情况下只要搜索它就会为您找到答案。

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

使用 visual studio 编译器时,它会产生以下错误:错误 C2997“test::idk”:无法从类内初始值设定项中推导数组绑定(bind)

这是非常明确的。

米克

关于C++ 结构 "Incomplete type is not allowed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35106733/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com