如何在联合中表示空值?

时间:2014-02-09 19:46:50

标签: c++ unions

为了好玩,我正在尝试用C ++包装sqlite API。我想要一个有点像jdbc的接口,所以我有一个Statement类,它有一些方法可以在预准备语句中绑定?小丑字符。

我想我会在union

中表示这些参数
union Param
{
    int i;
    double d;
    std::string s;
};

这些将以参数的索引作为键进入地图:

std::map<int, Param> parammap;

那么,我可以使用类似jdbc的方法:

void Statement::SetInt(int idx, int i)
{
    Param p;
    p.i = i;
    parammap.insert(std::make_pair(idx, p));
}

这一切都很有趣,直到我发现我还希望能够在数据库中设置NULL值。

stmt.SetInt(1, 15);
stmt.SetString(2, "John Carmack");
stmt.SetNull(3); //uh oh

有没有一种聪明的方法可以在union中实现这一点?我怎么代表那个?

0 个答案:

没有答案