[英]c++ union in multiple files
很抱歉,這很長,但是解釋起來有點復雜。
我們最近不得不交以下程序(這里已大大簡化)進行家庭作業:
例如:
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.