C++ C++;-将rapidjson::Document作为参数传递给函数

C++ C++;-将rapidjson::Document作为参数传递给函数,c++,json,arguments,rapidjson,C++,Json,Arguments,Rapidjson,我将指向rapidjson::Document的指针作为参数传递 foo(rapidjson::Document* jsonDocument) { std::cout << jsonDocument["name"] << std::endl; } 有人能帮我吗?使用引用或值作为参数。使用带有指针的[]将尝试使用您的文档,就像它是一个文档数组一样。引用或值将调用预期的运算符 // a const reference foo(const rapidjson::Doc

我将指向
rapidjson::Document
的指针作为参数传递

foo(rapidjson::Document* jsonDocument)
{
    std::cout << jsonDocument["name"] << std::endl;
}

有人能帮我吗?

使用引用或值作为参数。使用带有指针的
[]
将尝试使用您的文档,就像它是一个文档数组一样。引用或值将调用预期的运算符

// a const reference
foo(const rapidjson::Document& jsonDocument) {
    std::cout << jsonDocument["name"] << std::endl;
}

// a copy (or move)
foo(rapidjson::Document jsonDocument) {
    std::cout << jsonDocument["name"] << std::endl;
}

找不到受骗者,但有很多。简言之,在使用指针之前,您需要先解除对指针的引用,如
(*jsonDocument)[“name”]
jsonDocument[0][“name”]
或使用引用,如
rapidjson::Document&jsonDocument
。使用引用是最好的解决方案。谢谢,我正在使用常量引用。如果您将文档作为常量引用传递,您可以添加如何在局部变量中保存值吗?这里有一个例子
foo(const-rapidjson::Document&d){const-Value&v=d[“name”];}
@i7clock您指的是副本吗?如果是,则
auto doc\u copy=doc应该足够了。我的意思是为了进一步提取值和操作DOM,但是感谢您告诉我如何进行复制
// a const reference
foo(const rapidjson::Document& jsonDocument) {
    std::cout << jsonDocument["name"] << std::endl;
}

// a copy (or move)
foo(rapidjson::Document jsonDocument) {
    std::cout << jsonDocument["name"] << std::endl;
}
rapidjson::Document doc = /* ... */;

foo(doc);