rapidjson :: std :: pair中的文档

时间:2014-04-07 08:41:38

标签: c++ cocos2d-x linker-errors std-pair rapidjson

我收到此错误:

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只是一个标题库。

为什么我不能退还这对?

1 个答案:

答案 0 :(得分:2)

构造ProcessedResponseResult时,它将调用rapidjson::Document的复制构造函数,但在文件rapidjason/document.h中,为了防止复制rapidjson::Document对象,它会声明私有拷贝构造函数,并没有实现它,因此这会导致链接器错误。

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

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