我正在创建一个类,并且想在一个方法中返回我的类。我的类(class)有一个rapidjson::Document对象。

您可以在这里看到以前的问题:LNK2019: "Unresolved external symbol" with rapidjson

如我所发现,rapidjson阻止您执行Document对象的任何形式的复制,然后包含Document对象的类的默认拷贝失败。我正在尝试定义自己的拷贝构造函数,但我需要执行对象的拷贝。 I saw a way假设使用.Accept()方法复制对象,但是在rapidjson::Document类内部返回了很多错误:



这是我的复制构造函数:

jsonObj::jsonObj(jsonObj& other)
{
    jsonStr = other.jsonStr;
    message = other.message;

    //doc = other.doc;
    doc.Accept(other.doc);

    validMsg = other.validMsg;
}

我发现in the code of the library(第52-54行)是“Copy constructor is not permitted”。

这是我的课:
class jsonObj {
    string jsonStr;
    Document doc;

public:
    jsonObj(string json);
    jsonObj(jsonObj& other);

    string getJsonStr();
};

方法:
jsonObj testOBJ()
{
    string json = "{error:null, message:None, errorMessage:MoreNone}";
    jsonObj b(json);
    return b; //It fails here if I return a nested class with a rapidjson::Document in it. Returning NULL works
}

那么如何执行Document元素的拷贝?

最佳答案

仓库https://github.com/rjeczalik/rapidjson
拥有DeepCopy patch,它可以帮助您将一个文档复制到另一个文档中。

关于c++ - 执行rapidjson的Document对象的拷贝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22707814/

10-13 08:07