繁体   English   中英

多个文件中的c ++联合

[英]c++ union in multiple files

很抱歉,这很长,但是解释起来有点复杂。

我们最近不得不交以下程序(这里已大大简化)进行家庭作业:

  • 表示物理数据块的某种类型的结构(类/结构)(仅是char [1024])
  • 该块的两种逻辑分区

例如:

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;
}

但是问题在于规范的一部分(我为简化该部分而剪切掉了)是物理物料位于一个单独的文件中,而逻辑物料位于一个单独的文件中。

所以现在的问题是:是否有一种方法可以将字段添加到联合中(我认为不是),或者可以通过其他方法在“物理”文件中具有功能,可以接受“逻辑”块并将其用作原始块?

我希望这很清楚。

PS这已经到期了,我用reinterpret_cast解决了。 我想知道是否有更优雅的方法。

不,必须一起定义类型的整个结构。 您不能“重新打开”类型,以后再向其定义中添加内容。

如您在此处所述,分配要求三种类型,而不是一种代表三件事的类型。 您的前三个结构定义就足够了。

在定义完所有三个结构之后,欢迎您定义一个联合类型。 可能是这样的:

#include "physical.h"
#include "logical.h"

union combined_structure {
  p phy;
  l1 logi1;
  l2 logi2;
};

您可以做的是创建两个联合。 只要您不互换它们,就可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM