当我尝试在结构中定义数组时,是否有人知道此错误的含义以及为什么会发生错误?
struct test{
int idk[] = { 1,2,3 };
};
为什么数组idk不完整类型或什么?
提前致谢。
聚苯乙烯。 我需要这个,所以我可以从测试结构中访问这些数组。
答案 0 :(得分:3)
在本地范围内声明变量时(例如在函数体中),你可以这样做,编译器不会抱怨,它会推断你是指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':无法从类内初始化程序
推导出数组绑定这是非常明确的。
米克
答案 1 :(得分:1)
array bound cannot be deduced from an in-class initializer
将代码段更改为
struct test{
int idk[3] = { 1,2,3 };
导致编译成功。