rapidjson :: Документ в std :: pair

Я получаю эту ошибку:

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

Решение

Когда вы строите ProcessedResponseResult, он будет вызывать конструктор копирования rapidjson::Document, но в файле rapidjason/document.h, чтобы предотвратить копирование rapidjson::Document объект, он объявляет конструктор частной копии и не реализует его, поэтому это вызывает ошибку компоновщика.

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

Если ваша причина для использования std::pair просто вернуть 2 значения из функции, я бы рекомендовал передать jsonDoc по ссылке.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]