这是我的代码:
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]
。但它显示错误:
ERROR CYAPA.CPP 12: Cannot convert 'first' to 'char'
ERROR CYAPA.CPP 12: Cannot convert 'first' to 'int'
我做错了什么?我正在使用Turbo c ++,因为它是我们在印度的课程所允许的。
答案 0 :(得分:1)
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
。