【发布时间】:2019-09-28 16:49:17
【问题描述】:
我必须创建一个类,它有一个名为 m_Value 的成员变量,它的类型为 std::string,但应该能够接受来自用户的输入,可以是 double、int 或 std::string。
这是这个 Field.h:
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;
};
我应该能够做的是允许类方法 AddField() 能够接受 int、double 或 std::string 并将其存储在字段成员变量中。这将是一个示例场景:
我曾考虑为 AddField 添加重载方法,但由于成员变量必须是一种类型,我该如何存储该值?
【问题讨论】:
-
这种场景是
std::variant所擅长的 -
使用
std::variant或std::any。如果您没有 c++ 17,请使用boost::variant或boost::any -
是的,我就是这么做的,哈哈。我想写我的问题让我想得更清楚了哈哈谢谢你!
-
从未使用过std::variant...我查一下
标签: c++