如何复制rapidjson::value?

use*_*831 6 c++ copy rapidjson

我正在尝试将 Rapidjson::value 复制到类成员中。

\n\n
error: \xe2\x80\x98rapidjson::GenericValue<Encoding, <template-parameter-1-2> >::GenericValue(const rapidjson::GenericValue<Encoding, <template-parameter-1-2> >&) [with Encoding = rapidjson::UTF8<char>; Allocator = rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>]\xe2\x80\x99 is private\n
Run Code Online (Sandbox Code Playgroud)\n\n

只是为了执行以下行:

\n\n
void setData(const rapidjson::Value json) {\n    this->json =  json;\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

知道如何简单地将rapidjson对象复制到类成员中,以便稍后可以对其进行解析吗?

\n

brk*_*yal 4

要深度复制rapidjson,您应该使用CopyFrom。您还应该为此副本提供一个分配器。那么,您的类成员将是分配器是有道理的,因此请将其设置为rapidjson::Document 类型,而不是rapidjson::Value (Document 继承自Value)。

另外,您最好将 json 参数作为参考而不是通过值获取。

所以,你的函数应该是这样的:

void setData(const rapidjson::Value& json) {
    this->json.CopyFrom(json, this->json.GetAllocator());
}
Run Code Online (Sandbox Code Playgroud)

而你的班级成员应该定义为:

rapidjson::Document json;
Run Code Online (Sandbox Code Playgroud)