C++ 创建可以在一个成员变量中存储int、std::string或double的类
我必须创建一个类,该类有一个名为m_Value的成员变量,该变量的类型为std::string,但应该能够接受来自用户的输入,可以是double、int或std::string 这里是这个字段。h:C++ 创建可以在一个成员变量中存储int、std::string或double的类,c++,C++,我必须创建一个类,该类有一个名为m_Value的成员变量,该变量的类型为std::string,但应该能够接受来自用户的输入,可以是double、int或std::string 这里是这个字段。h: class Field { public: Field(std::string name, std::string value); std::string GetName(); std::string GetValue(); void Print(); pri
class Field
{
public:
Field(std::string name, std::string value);
std::string GetName();
std::string GetValue();
void Print();
private:
std::string m_Name;
std::string m_Value;
};
还有另一个类,它有一个方法来实例化这个类,称为Element:
class Element
{
public:
Element();
void Print();
Field* AddField(std::string fieldName, std::string fieldValue);
Field* GetField(std::string fieldName);
private:
std::vector<Field*> m_Fields;
};
类元素
{
公众:
元素();
作废打印();
字段*添加字段(标准::字符串字段名,标准::字符串字段值);
字段*GetField(标准::字符串字段名);
私人:
std::向量m_场;
};
我应该能够做的是允许类方法AddField()能够接受int、double或std::string,并将其存储在field成员变量中。这将是一个示例场景:
我曾想过为AddField添加重载方法,但既然成员变量必须是一种类型,那么如何存储该值呢?基本上有两种方法:
- 存储它并将其转换为字符串
- 使用标记的联合
< C++核心准则的规则有一个很好的例子。这种场景是好的借口<代码> STD::变型< /C> >或<代码>:如果你没有C++ 17,请使用<代码> Boo::变体< /C> >或者代码> Boo::Yea,我只是做了那个LOL。我觉得写我的问题让我想了一点更清楚的LOL谢谢TAHT!从未使用过std::variant。。。我查一下