我收到此错误:

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是仅 header 的库。

我为什么不能归还这对呢?

最佳答案

构造ProcessedResponseResult时,它将调用rapidjson::Document的副本构造函数,但是在文件rapidjason/document.h中,为防止复制rapidjson::Document对象,它声明了一个私有(private)副本构造函数,但未实现它,因此导致链接器错误。

//! Copy constructor is not permitted.
private:
    GenericValue(const GenericValue& rhs);

如果您使用std::pair的原因只是要从该函数返回2个值,则建议您通过引用传递jsonDoc

关于c++ - quickjson::std::pair中的文档,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22907480/

10-12 16:49