JsonCpp只在Windows中出现模糊过载

时间:2013-09-19 17:57:19

标签: c++ json windows overloading ambiguous

我需要用jsoncpp库读取一个json文件。

我有这个文件:

{"one":false,"two":[{"id":"first"},{"id":"second"}],"three":550}

如果我只需要读取“two”元素的第一个id,我使用:

std::string contents; //Contain the file
Json::Value root;
Json::Reader reader;
reader.parse(contents, root, false);
std::string aux = root["two"][0]["id"].asString();

它在Linux中运行良好,但是当我在Windows中尝试它时出现此错误:

error: ambiguous overload for 'operator[]' in 'root.Json::Value::operator[](((const char*)"two"))[0]'

为什么会发生这种情况?我该如何解决这个问题?感谢。

已解决:有两个operator[],一个int作为参数,另一个参数const char,编译器不知道在Windows中使用谁,但在Linux中是的。现在我使用[0u]代替[0]来表示一个数字作为参数,它可以正常工作。

1 个答案:

答案 0 :(得分:4)

这让我发疯,直到我偶然发现这个问题,我神秘地想出来: 只需将其转换为Json :: Uint(出于某种原因),或者使用' u':

MapEvent::MapEvent(Json::Value& val)
{
    operator_enum = val.get(0u, "").asString();
}