对不起,这很长,但解释起来有点复杂。
我们最近不得不接受以下计划的作业(这里简化得很多):
例如:
struct p {
char[1024]
}
struct l1 {
int num;
char name[20];
}
struct l2 {
int num;
char type[10];
char filler[400];
bool flag;
}
对我来说显而易见的事情是建立工会
union {
p phy;
l1 logi1;
l2 logi2;
}
但问题是规范的一部分(我为了简化它而删除的部分)是物理内容在一个单独的文件中然后是逻辑内容。
所以现在的问题是:有没有办法向联合添加字段(我假设没有)或另一种方法让'物理'文件中的函数接受'逻辑'块并将它们用作原始块?
我希望这很清楚。
P.S。这已经到期,我用reinterpret_cast
解决了这个问题。我想知道是否有更优雅的方式。
答案 0 :(得分:0)
不,必须一起定义类型的整个结构。您不能“重新打开”类型以便稍后将其添加到其定义中。
你在这里所说的作业要求三种类型,而不是一种代表三种类型的类型。你的前三个结构定义就足够了。
在定义了所有三个结构之后,欢迎您定义一个联合类型。可能是这样的:
#include "physical.h"
#include "logical.h"
union combined_structure {
p phy;
l1 logi1;
l2 logi2;
};
答案 1 :(得分:0)
你可以做的是建立两个工会。只要你不交换它们就可以了。