从技术上讲,它就像你写的那样工作,但是成员不需要 struct word(实际上会产生警告但有效。)
struct Force {
float X[10];
float Y[10];
float Z[10];
};
struct Measurement {
char serial_number[30];
Force F1;
Force F2;
};
然后在这样的函数使用中:
Measurement somevar;
somevar.F1.Y = 999;
现在执行此操作(并保存堆栈)的正确方法是使用指针。
struct Measurement {
char serial_number[30];
Force* F1;
Force* F2;
};
接着:
Measurement* m = new Measurement;
if (m) {
m->F1 = new Force;
m->F2 = new Force;
}
使用后必须删除所有指针以避免内存泄漏:
delete m->F1;
delete m->F2;
delete m;
还有另一种方法。使用:
struct Force {
float X[10];
float Y[10];
float Z[10];
};
struct Measurement {
char serial_number[30];
Force F1;
Force F2;
};
您可以使用 malloc 分配一些内存并将其视为结构(没有时间测试它,但我多次使用这种方法)。
Measurement* m = (Measurement*)malloc(sizeof( size in bytes of both structs ));
// zero memory on m pointer
// after use
free(m);
就这样。