我正在尝试将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对象复制到一个类成员中,以便以后可以解析它吗?
答案 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;