0
私はこの列挙、労働組合、および構造体があります。私は、動的に別の変数に基づいて組合内の変数にアクセスする方法を知っていただきたいと思いアクセス組合が動的に
union num {
int i;
short s;
float f;
double d;
};
enum tag {SHORT, INT, FLOAT, DOUBLE};
struct vrnumber {
num num;
tag type;
};
を(すなわち、ユーザの入力)。 (つまり)私は、共用体の変数で特定の操作を行いたいですが、実行時にどの共用体変数にアクセスするかを知りたいのです。
私は値を格納または使用する労働組合にアクセスすると、すべての場合には、それが唯一の違いは、同じ操作されている間、非常に長く、冗長だと思うvrnumber m;
switch (m.type) {
case SHORT: //an operation ..
case INT: //same operation ...
case FLOAT: //same operation ...
case DOUBLE: //same operation ...
}
:だから何が良い方法の代わりのようなものになるだろう。これを行うには
最後に書き込まれたもの以外のユニオンのメンバーからの読み取りは、未定義の動作です。なぜあなたは組合を使いたいのか説明できますか? –
[バリアントタイプ](https://en.wikipedia.org/wiki/Variant_type)を作成しようとしているようです。そこには、このデザインパターンの既存の例がたくさんあります。 – MrEricSir