我收到这个错误:
Undefined symbols for architecture i386:
rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >::GenericValue(rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> > const&)
当我尝试成对返回 rapidjson::Document
时,这个错误跳到我身上:
typedef std::pair<rapidjson::Document, std::string> ProcessedResponseResult;
ProcessedResponseResult ProcessResponse(HttpResponse* response)
{
rapidjson::Document jsonDoc;
...
return ProcessedResponseResult(jsonDoc, std::string());
}
如果有帮助的话,rapidjson 是一个只有头文件的库。
为什么我不能返回?
最佳答案
当你构造一个ProcessedResponseResult
时,它会调用rapidjson::Document
的拷贝构造函数,但是在rapidjason/document.h
文件中>,为了防止复制 rapidjson::Document
对象,它声明了一个私有(private)复制构造函数,但没有实现它,所以这会导致链接器错误。
//! Copy constructor is not permitted.
private:
GenericValue(const GenericValue& rhs);
如果您使用 std::pair
的原因只是为了从函数返回 2 个值,我建议通过引用传递 jsonDoc
。
关于c++ - rapidjson::std::pair 中的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22907480/