c++ - 如何创建未知数量变量和未知类型变量的构造函数

标签 c++ json constructor

我创建了一个名为 JSON 的类,它具有三种数据类型(stringintbool)。我想创建一个可以获取任何这些类型的构造函数。 我不想为这三种数据类型创建三个单独的构造函数,而是创建一个可以处理所有数据类型的构造函数。

我只创建一个构造函数的原因是我想要一个可以处理未知数量的变量和未知变量类型的构造函数。

下面的构造函数可以获得类型的输入: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 类用于表示可以使用 intstd::string bool

然后,您可以在您的 initializer_list 中接收这些实例:

struct Json {
    Json(std::initializer_list<Value> values);
};

因此您收到了一个 Value 列表,每个列表都可以用 intstd::string 或一个 bool 。这是一个示例 Live at Coliru

关于c++ - 如何创建未知数量变量和未知类型变量的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41187338/

相关文章:

c++ - 什么是 C++20 中的 "prospective destructor"?

c++ - ReadProcessMemory 向后读取内存?

json - Highcharts 动态添加系列

python - 将python dict转换为字符串并返回

java - 使用 Jackson 将 JSON 反序列化为多态类型 - 一个完整的示例给了我一个编译错误

Java调用构造函数

c++ - 编译器自动确定构造函数初始化列表?

c++ - 使用和不使用 INCLUDED_HEADERNAME_H 定义 header 有什么区别

c++ - 不允许第二个 setuid

vector 的 C++ 初始化