如何正确重载具有两种输入类型“Json::value”和“std:string”的方法?

Emm*_*odu 0 c++ jsoncpp

make()我在类中有一个静态方法Response。它被重载以从 jsoncpp 获取std::stringJson::Value获取。

我重载了该方法,如下所示:

Response::make(Json::Value body)
{
  ...
}

Response::make(std::string body)
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

这会导致编译时出现此错误:

Response::make(Json::Value body)
{
  ...
}

Response::make(std::string body)
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

是否被Json::value视为字符串?我该如何解决这个问题?

Rem*_*eau 7

根据错误消息,您正在将一个const char[33]数组(我假设是字符串文字?)传递给make(). 但是,您没有接受该类型的重载,因此编译器必须将其转换为您有重载的另一种类型。

但是, 和std::string都有JSON::Value一个接受 a const char*(aconst char[]衰减为)的构造函数,因此编译器不知道应该调用哪个重载,因此会出现错误。

所以,你有 2 个选择: