は、以下の構造体を考慮してください型を整数にマップすることは可能ですか?
struct value{
std::vector<UCHAR> raw_data;
int type;
};
はタイプの値は、この例では、{0、1、2}であることができると言うことができます。
タイプ== 0の場合、ベクトルのデータが4バイトを表しているタイプ場合、ベクター内のデータが== 2バイトの符号付き整数
を表しているタイプ== 1の場合は整数
署名さ図2は、次いで、ベクター内のデータは、任意の長さ
構造のフォーマットは私の制御の外での生バイトの配列であり、タイプの30以上の可能な値が存在します。
実行時に型を判別できますか?おそらく、この擬似コードのようなもの:
void PrintValue(value & v)
{
TypeLookup<v.type> val(v); // Assuming the type is supported by cout
std::cout << val << std::endl;
}
私は現在やっている何が私は良いと考え変換方法例えば呼び出し、値を使用する大規模なswitch文をいつでもある:
int32_t GetValAs32Integer();
int16_t GetValAsShort();
std::vector<UCHAR> GetValAsRaw();
をよりeligant方法はありますこれを行う?
保存できるタイプを管理していますか?これらのクラスタイプはありますか? –
おそらくベクトルの代わりに共用体を使用していますか? – stakSmashr
"構造体のフォーマットがコントロールできません" – user3853544