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