gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 02:12:50 25 4
gpt4 key购买 nike

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

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

但是我不能通过 jsonDocument["name"] 来访问 name 属性。

尝试不使用指针会导致错误:

error: 'rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::GenericDocument(const rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>&) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; StackAllocator = rapidjson::CrtAllocator]' is private
GenericDocument(const GenericDocument&);

有人可以帮助我吗?

最佳答案

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

// 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);

关于C++ - 将 rapidjson::Document 作为参数传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42207947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com