我正在處理通用配置文件解析器。C++中的通用配置文件解析器設置器
第一個,應該調用一個函數來設置變量的數據類型。
enum type {a,b,c};
union{int a; double b; float c;};
void SetTypes(type x, string *names){
// names[] contains the names of the variables
// type is what data type from the union needs to be used
union name.x; //------(1)
}
但是我面臨的問題與字符串[]長度。
所以,我做我的函數以下列方式
void setTypes(type a, string name...){}
有使之更爲高效的任何方式;這樣我可以將相同類型的數據捆綁在一起?
該程序的目的是讓我們不必在我們的代碼中預定義數據類型,使配置解析器更加靈活。
的秒問題在這裏是行標(1) 我如何<union> <varname>.<enum>
發生呢?其中VARNAME和枚舉是變量
編輯1:加入實施例
例如,
struct EXAMPLE{
/*Some Code*/
enum allowed_types {vec3D, complex_num};
union {
Vector3D vec3D;
Complex complex_num;
};
/* More Code*/
};
當我調用該函數的方式
setType(vec3D, {"point1", "point 2", "point3"}, complex_num, {"num1", "num2"});
然後我需要的函數使變量(每個結構) point1 of type Vector3D point2 of type Vector3D point3 of type Vector3D num1 of type Complex num2 of type Complex
我使用枚舉,以便對使用的類型有更多的控制。 我正在使用聯合,以便我可以使用指針將值存儲在散列表中,以最大限度地減少空間損失。
推薦編輯:'a'使用了三種不同的方式來製作混淆閱讀。 – user4581301
我在這裏有點困惑。你對名字的長度有什麼問題?他們是數百萬?你真的確定你需要一個工會來存儲數據嗎?你能否更精確地瞭解所需的行爲並舉例說明? – user1620443
@ user4581301它使用的是「a」。 –