C++参数支持字符串和整数的结构
C++ Parameters Structure supporting strings and integers?
如何更轻松地完成此操作:
struct Parameters {
public:
int Parameter1;
std::string Parameter1;
int Parameter2;
std::string Parameter2;
}
C++中不存在像.NET中那样的"var"吗?我需要参数能够是整数和字符串。
您在C++中有关键字"auto",但它在C++0x和C++1x上,由编译器决定类型,编译后不能更改。
你可能正在寻找类似boost::variant的东西:http://www.boost.org/doc/libs/1_56_0/doc/html/variant.html
您可以使用Union,但您仍然需要在编译时知道要分配的类型。您可以通过使用带有隐式类型的模板来分配值来隐藏这一点,但在读取值时,您仍然需要知道合适的类型。但不确定这会有多有用。
您还可以使用多态性和您自己的(模板)包装类来代替内置类型。
我建议您考虑通用代码并设置为使用工厂。
工厂的使用
问题是,在解析字符串之前,您不知道参数的类型。最好的方法是将所有内容保持为字符串,或者创建一个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;
}
}
您的参数"list"可能是指向基类的指针容器(如果类型未知),也可能是派生结构的容器:
struct Parameter_Container
{
std::vector<Int_Parameter> parameters;
};
至于工厂,工厂将是一个可以根据某些标准创建参数对象的对象。它将返回一个指向基类的指针。
注意:除非您在严格约束的平台上,例如嵌入式系统,否则不要担心内存位置重叠以节省空间
相关文章:
- Qsort() 比较结构体整数的总和
- 如何修改此函数,以便如果函数的参数是特定结构,则返回具有较大整数的结构?
- boost::任何带有结构体和无符号整数
- 如何在 C++11 编译时构建具有递增值的整数成员的结构序列
- 结构上溢出的整数加法
- 如何将结构名称更改为整数?
- 从低到高组织整数并在C++中使用结构
- 结构中的整数、字符和浮点数
- C 中的内存模型:为什么在同一内存位置分配了结构中的两个整数
- C :对矢量进行排序&lt; struct&gt;(结构有2个整数)基于结构的整数之一
- 在指向结构的指针中访问指向整数的指针
- C MPI创建并发送具有字段char [16]和整数的结构数组
- C++ - 泛型结构的成员在分配双精度时给出错误的值(但适用于整数)
- 在英特尔x86体系结构上使用非AVX指令修改xmm整数寄存器值
- 在处理结构模板中的整数时如何修复"X 不是类模板"?
- 可用于存储和管理整数集合的最佳C++数据结构是什么
- 哪种数据结构和设计用于选择最佳整数集
- 为什么使用 24 位整数时结构大小不会改变
- 将整数结构转换为位掩码
- 如何将整数结构初始化为零