如何复制 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;
我正在尝试将 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;