考慮以下的結構:是否可以將類型映射爲整數?
struct value{
std::vector<UCHAR> raw_data;
int type;
};
比方說類型的值可以是{0,1,2}在此示例中
如果type == 0,則在載體中的數據是代表一個4字節帶符號整數
如果類型== 1,則在載體中的數據是代表一個2字節符號整數
如果type == 2然後在矢量中的數據是任意長度
結構的格式是在我的掌握的原始字節的陣列,並且有類型超過30可能值。
是否可以在運行時確定類型?也許是這樣的僞代碼:
void PrintValue(value & v)
{
TypeLookup<v.type> val(v); // Assuming the type is supported by cout
std::cout << val << std::endl;
}
我目前在做什麼是一個大的switch敘述只要我使用的值,然後調用apropriate轉換方法例如:
int32_t GetValAs32Integer();
int16_t GetValAsShort();
std::vector<UCHAR> GetValAsRaw();
有沒有更eligant方式做這個?
你在控制可以存儲的類型嗎?這些類是什麼類? –
也許使用聯合來代替向量? – stakSmashr
「結構的格式超出了我的控制範圍」 – user3853544