接上篇,要造这个var类,首先要搞明白它是如何能够既装得下单个元素又能装下一个数组,现在呢,就解决这个问题。先实现单个int型和数组的关系,继而实现float和数组的关系,继而实现数组中嵌套数组。
首先,有这么一个东西:std::initializer_list,这个是C11的一个特性,骚气无比,能实现一种非常简易的数组初始化方法。到底怎么用,这样
std::vector v = { 1, 2, 3, 4 };
也就是说,一个类可以被赋予一个数组了,甚至可以这样:
json array_not_object = json::array({ {“currency”, “USD”}, {“value”, 42.99} });
这么着就比较简单了,首先定义一个数据结构类型枚举变量:_vt,用来表示这是一个什么样的数据类型。
我们来看看这个类是如何初始化的,首先,如果只是单一结构变量,如int或者float,就把相应的元素赋值和设定枚举类型就行,但如果它是一个数组类型的呢?
首先,它接收的是一个initializer_list类型 ,而且这个类型还只是一个模板,因此它接收的是initializer_list类型,所有数据变量又都转成了var型,然后如果var型里面还是一个initializer_list类型,那么就再进行下一次展开,这样的话,是不会出现错误的。
但是,如何读取呢?理论上讲,我想直接用[]来进行读取,并且通过重载,可以实现花样非常多的重载,但是现在