指定包含另一个结构数组的结构数组时出错

时间:2016-05-13 11:13:27

标签: c++ arrays structure

这是我的代码:

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 ++,因为它是我们在印度的课程所允许的。

1 个答案:

答案 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