Я получаю эту ошибку:
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
объект, он объявляет конструктор частной копии и не реализует его, поэтому это вызывает ошибку компоновщика.
//! Copy constructor is not permitted.
private:
GenericValue(const GenericValue& rhs);
Если ваша причина для использования std::pair
просто вернуть 2 значения из функции, я бы рекомендовал передать jsonDoc
по ссылке.
Других решений пока нет …