gpt4 book ai didi

reference - rapidjson 对象作为函数参数导致编译器错误

转载 作者:行者123 更新时间:2023-12-01 10:47:11 26 4
gpt4 key购买 nike

我尝试将 rapidjson::Document 对象作为函数参数传递:

std::string json_to_string(rapidjson::Document jmsg)
{
// Convert JSON document to string
rapidjson::StringBuffer buffer;
rapidjson::Writer< rapidjson::StringBuffer > writer(buffer);
jmsg.Accept(writer);
std::string str = buffer.GetString();
return str;
}

如果我像上面那样执行函数,我在编译代码时会得到这个错误:

在函数`rapidjson::GenericDocument, rapidjson::MemoryPoolAllocator >::GenericDocument(rapidjson::GenericDocument, rapidjson::MemoryPoolAllocator > const&)':

../../rapidjson/document.h:691: undefined reference `rapidjson::GenericValue, rapidjson::MemoryPoolAllocator >::GenericValue(rapidjson::GenericValue, rapidjson::MemoryPoolAllocator > const&)'collect2:错误:ld 返回 1 退出状态

如果我将参数类型从“rapidjson::Document jmsg”更改为“rapidjson::Document &jmsg”,错误就会消失。使用引用是可以的,但是,如果我不将其定义为引用类型,我仍然想知道代码有什么问题。

最佳答案

您不能将 Document 作为值传递,您必须通过引用或指针传递它。这是因为 Document 不可复制。

我建议在你的情况下使用这个函数声明:

std::string json_to_string(const rapidjson::Document& jmsg)

关于reference - rapidjson 对象作为函数参数导致编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24690318/

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