我正在尝试转发声明一个结构 A 并定义一个包含 A 数组的结构 B。 我收到错误消息,指出“不允许使用不完整的类型”
这是我的:
struct A;
struct B
{
// something
struct A x[10]; // This where I get the error incomplete type not allowed
};
struct A
{
// something
};
我做错了什么?
最佳答案
作为解决方法,您可以像这样声明一个指向结构 A 的指针
struct B
{
// something
struct A * x;
};
这是因为如果你有这样一行
struct B b;
b
将有一个成员 x[10]
。如果你没有完全声明 struct A,struct B 就不知道如何分配 10 个 struct A 元素。在解决方法中,如果您只声明一个指针,则结构 B 不需要知道如何分配结构 A,而只需要知道如何分配一个指针。
关于c - 在另一个结构中向前声明的结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28377536/