0
A
回答
0
你在C++中有'auto'這個關鍵字,但是它在C++ 0x和C++ 1x上,它是編譯器,它決定了類型,編譯後它不能改變。
你可能尋找類似的boost ::變種:http://www.boost.org/doc/libs/1_56_0/doc/html/variant.html
0
您可以使用Union,但你仍然需要知道你指定什麼類型的編譯時間。您可以通過使用帶有隱式鍵入的模板來分配值來隱藏這一點,但在讀取值時仍需知道適當的類型。不知道這將是多麼有用。
你也可以使用多態性和你自己的(模板)包裝類代替內置類型。
0
我建議你把通用代碼分解出來並設置爲使用工廠。
使用工廠
的問題是,你不知道參數的類型,直到您解析字符串。最好的方法是將所有東西都保存爲一個字符串或創建一個Factory並使用一個基類。有關更多研究,請參閱「C++工廠設計模式示例」。
struct Base_Parameter
{
std::string& parameter_as_string;
virtual void extract_parameter(const std::string& parameter_string) = 0;
};
struct Int_Parameter : public Base_Parameter
{
int parameter_value;
void extract_parameter(const std::string& parameter_string)
{
std::istringstream param_stream(parameter_string);
param_stream >> parameter_value;
}
}
你的參數「表」是,要麼指向基類(如果類型未知),或者你可以有後代結構的容器的容器:
struct Parameter_Container
{
std::vector<Int_Parameter> parameters;
};
至於工廠,工廠將是一個可以根據某些標準創建參數對象的對象。它會返回一個指向基類的指針。
注意:除非您處於嚴格受限的平臺(如嵌入式系統),否則不要擔心重疊的內存位置以節省空間。
相關問題
- 1. 笨參數整數和字符串
- 2. Initilizing字符**字符串ANSI C的肥皂結構函數的參數使用
- 3. 字符串的C++整數
- 4. 字符串數據結構支持追加,前插和搜索操作
- 5. 以特殊字符結尾的C#字符串到整數
- 6. C#字符串去結構
- 7. SolrJ是否支持字符串數組?
- 8. C++如何將字符串拆分爲字符串和整數?
- 9. 字符串構造函數參數
- 10. 參考字符串內的整數? Python
- 11. 結構中的整數,字符和浮點數
- 12. 字符的結構和字符串
- 13. SAML2 SSO - EntityId中是否支持查詢字符串參數URI
- 14. Volley是否有JSON參數,字符串響應本機支持
- 15. 將數組中的整數和字符串結合起來
- 16. 在C++/C之間傳遞結構中的字符串/數組#
- 17. 字符串的結構數組
- 18. 字符串索引的數據結構?
- 19. 字符串集合的數據結構
- 20. android C++字符串支持to_string,stof等
- 21. 結構和參數
- 22. 在C#4.0中,System.Windows.Window構造函數不支持任何參數
- 23. 整數的字符串格式c#
- 24. 用C解析「字符串」(char數組)爲字符串,整數和int
- 25. 從C++中的模板函數返回字符串和整數
- 26. SSRS - 用字符串和布爾參數過濾整數
- 27. C++模板C字符串參數
- 28. PHP - 將字符串轉換爲具有千分隔符支持的整數
- 29. 整數[字符串]
- 30. 整數字符串
C#的'var'就像'auto'。這並不意味着變體。使用'boost :: variant'。 – chris 2014-10-08 23:00:38
C++本身不支持「此類型可以是多種類型」。有一些模板庫晚餐,比如'boost :: variant'。可能無論它應該是一個模板,例如 – 2014-10-08 23:01:03
。函數模板 – 2014-10-08 23:08:05