簡體   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