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. C++結構字符串和整數輸入
- 2. 笨參數整數和字符串
- 3. C malloc數組的字符串結構
- 4. C - 結構數組的printf字符串
- 5. Initilizing字符**字符串ANSI C的肥皂結構函數的參數使用
- 6. 字符串的C++整數
- 7. 顯示c中的結構的數字和字符串
- 8. 字符串數據結構支持追加,前插和搜索操作
- 9. 取結構變量中的字符串和整數
- 10. c中的字符串和結構
- 11. 整數在C++字符串
- 12. C++ - while循環,字符串和整數
- 13. 以特殊字符結尾的C#字符串到整數
- 14. 調用函數從C++ DLL,其參數是一個結構和結構的屬性是一個字符串
- 15. 如何字符串和整數結合起來,一個字符串(C++)
- 16. 使用char字符串和數組結構的C程序
- 17. C++處理'結構'和字符串
- 18. C#字符串去結構
- 19. C字符串結構
- 20. SolrJ是否支持字符串數組?
- 21. C++如何將字符串拆分爲字符串和整數?
- 22. 將字符串拆分爲整數和字符串C++
- 23. C++函數參數和結構錯誤
- 24. PHP - 字符串和整數
- 25. 字符串和整數
- 26. 字符串構造函數參數
- 27. 參數的構造函數不支持C#6
- 28. 結構中的整數,字符和浮點數
- 29. 字符的結構和字符串
- 30. 參考字符串內的整數? Python
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