2014-04-07 10 views
1

이 오류가 무엇입니까 :rapidjson :: 문서 : 쌍

나는 한 쌍의 rapidjson::Document을 반환 할 때이 오류가 나 점프
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&) 

:

typedef std::pair<rapidjson::Document, std::string> ProcessedResponseResult; 

ProcessedResponseResult ProcessResponse(HttpResponse* response) 
{ 
    rapidjson::Document jsonDoc; 
    ... 
    return ProcessedResponseResult(jsonDoc, std::string()); 
} 

이 경우, 도움, rapidjson은 머리글 전용 라이브러리입니다.

왜 그 쌍을 반환 할 수 없습니까? 당신이 ProcessedResponseResult를 구성 할 때

답변

2

, 그것은 rapidjson::Document의 복사 생성자를 호출하지만, 파일 rapidjason/document.hrapidjson::Document 객체를 복사하는 것을 방지하기 위해, 그것은 개인 복사 생성자를 선언하고 그것을 구현하지 않기 때문에이 원인 링커 오류입니다. std::pair를 사용하는 이유 인 경우

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

단지 함수에서이 개 값을 반환하는, 내가 참조로 jsonDoc을 통과 권하고 싶습니다.

+0

내 유일한 선택은 동적 할당 ('new')이거나 참조로 문서를 전달하는 것 같습니다. 많은 의미를 지니고 있으며, 다재다능한 JSON 문서를 복사하고 싶지 않습니다. – Mazyod

+0

권자미 누설의 기회를 제거하십시오. 그래, 그렇게 할거야. 감사! – Mazyod

+0

젠장, 나는 그들이 다음과 같이 그냥 해줬 으면 좋겠다.'명시 적 CustomString (const std :: string & str);'... 명시 적 FTW. – Mazyod