如何创建未知数量的变量和未知类型变量的构造函数
我创建了一个名为JSON的类,它有三种数据类型(string
,int
,bool
)。我想创建一个可以获取这些类型的构造函数。 我不想为三种数据类型创建三个独立的构造函数,但可以处理所有这三种数据类型的构造函数。如何创建未知数量的变量和未知类型变量的构造函数
我只创建一个构造函数的原因是因为我想要一个可以处理未知数量变量和未知变量类型的构造函数。
下面的构造可以获得类型的输入:JSON{1, 2, 3, 4, 2, 13, 3, ..., n}
为int类型, 的n
而不是类型:JSON{1, 2, 3, "hello", 2, 13, true, ..., n}
JSON(initializer_list<int> init) : v(init) {}
我怎样才能做到这一点?
您可以创建与您的数据类型作为其成员的自定义类,并通过这个类对象的构造器:
struct MyData {
std::string strJsonVal;
int intJsonVal;
bool blnJsonVal;
};
然后,在你Json
类,你可以将它传递给构造函数,并获得
Json(MyData strctMyData)
{
strJsn = strctMyData.strJsonVal;
intJsn = strctMyData.intJsonVal;
blnJsn = strctMyData.blnJsonVal;
}
既然你有一个类型的数量有限,这是可能的送,我想创建一个能以这些值来构建一个结构:
从参数对象值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);
};
所以有您接收的每一个可以与int
,一个std::string
或bool
构造的Value
列表。这里有一个例子Live at Coliru
这就是JsonCpp如何做到的。 –
Value(int i)的用途是什么;'? –
@JohnTraveli它是一个构造函数,它将'int'作为参数。 –
'的std :: variant'可以帮助 – Ap31
的std ::变种是不工作... –
'的boost :: variant'可以帮助 –