use*_*831 6 c++ copy rapidjson
我正在尝试将 Rapidjson::value 复制到类成员中。
\n\nerror: \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\nRun Code Online (Sandbox Code Playgroud)\n\n只是为了执行以下行:
\n\nvoid setData(const rapidjson::Value json) {\n this->json = json;\n\n}\nRun Code Online (Sandbox Code Playgroud)\n\n知道如何简单地将rapidjson对象复制到类成员中,以便稍后可以对其进行解析吗?
\n要深度复制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)
| 归档时间: |
|
| 查看次数: |
8295 次 |
| 最近记录: |