如何复制rapidjson :: value?

时间:2016-11-20 14:54:00

标签: c++ copy rapidjson

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

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对象复制到一个类成员中,以便以后可以解析它吗?

1 个答案:

答案 0 :(得分:0)

要深度复制rapidjson,应使用CopyFrom。您还应该为此副本提供分配器。这样就很有意义了,您的类成员将是分配器,因此将其设置为Rapidjson :: Document类型,而不是rapidjson :: Value类型(Document从Value继承)。

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

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

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

而您的班级成员应定义为:

rapidjson::Document json;