我创建了一个名为 JSON 的类,它具有三种数据类型(string
、int
、bool
)。我想创建一个可以获取任何这些类型的构造函数。
我不想为这三种数据类型创建三个单独的构造函数,而是创建一个可以处理所有数据类型的构造函数。
我只创建一个构造函数的原因是我想要一个可以处理未知数量的变量和未知变量类型的构造函数。
下面的构造函数可以获得类型的输入:JSON{1, 2, 3, 4, 2, 13, 3, ..., n}
with n
整型,
但不是类型:JSON{1, 2, 3, "hello", 2, 13, true, ..., n}
JSON(initializer_list<int> init) : v(init) {}
我怎样才能做到这一点?
最佳答案
由于您可以发送的类型数量有限,我将创建一个可以使用这些值构造的结构:
struct Value {
Value(int i);
Value(std::string s);
Value(bool b);
private:
// hold it using boost::variant, std::variant or an union.
};
Value
类用于表示可以使用 int
、std::string
或 bool
。
然后,您可以在您的 initializer_list 中接收这些实例:
struct Json {
Json(std::initializer_list<Value> values);
};
因此您收到了一个 Value
列表,每个列表都可以用 int
、std::string
或一个 bool
。这是一个示例 Live at Coliru
关于c++ - 如何创建未知数量变量和未知类型变量的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41187338/