如何复制 rapidjson::value?

how do I copy a rapidjson::value?

我正在尝试将 rapidjson::value 复制到 class 成员中。

error: ‘rapidjson::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>]’ is private

只需执行以下行:

void setData(const rapidjson::Value json) {
    this->json =  json;

}

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

要 deep-copy rapidjson 你应该使用 CopyFrom。您还应该为此副本提供一个分配器。那么,您的 class 成员将成为分配器是有道理的,因此将其设为 rapidjson::Document 而不是 rapidjson::Value (文档继承自 Value)。

此外,您最好将 json 参数作为参考,而不是按值获取。

因此,您的函数应该如下所示:

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

而您的 class 成员应定义为:

rapidjson::Document json;