这是我的代码:
struct first
{
char x;
int y;
};
first a[3]={{'a',1},{'c',2},{'b',3}};
struct second
{
first b[2];
int z;
};
second c={{a[0],a[1]},12};
基本上,当我分配second
结构时,第一个元素应该是first
结构类型的数组。所以我试图将两个元素 a[0]
和 a[1]
放入其中。但它显示错误:
错误 CYAPA.CPP 12:无法将“first”转换为“char”
错误 CYAPA.CPP 12:无法将“first”转换为“int”
我做错了什么?我正在使用 Turbo c++,因为它是我们在印度的类(class)所允许的。
最佳答案
这种初始化在 C 中是不允许的,但在 C++98 中是允许的。
您的编译器比 1998 年早了好几年,因此它不允许某些已成为 C++ 标准一部分的内容也就不足为奇了。
您必须编写 {'a', 1}
而不是 a[0]
等,或者使用宏。宏解决方案可能如下所示:
#define A0 {'a', 1}
#define A1 {'c', 2}
#define A2 {'b', 3}
first a[3]={A0, A1, A2};
second c={{A0, A1}, 12 };
或者,您可以初始化a
,然后在运行时设置c
。
关于c++ - 分配包含另一个结构数组的结构数组时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37208591/