2013-09-06 3 views
0

내가있는 기능이 서명 :예상되지 않음 매개 변수를 연결하는 동안 무대

int alarmCreate(const std::string& familyCode, std::vector<std::pair<std::string,boost::any> >& alarmparameters, const std::string& description); 
에서 볼 수있는 바와 같이

, 그것은 세 가지 매개 변수가 있습니다; 문자열, 벡터, 문자열.

는하지만 내 프로젝트를 구축하고 때이 오류가 점점 오전 :

/root/projects/test/test.cpp:152 : 정의되지 않은 참조

redisHandler::alarmCreate(std::string const&, std::vector<std::pair<std::string, boost::any>, std::allocator<std::pair<std::string, boost::any> > >&, std::string const&) 

에를 내가 네 번째 매개 변수를 참조 형식 std :: allocator, 어디에서 오는 이해할 수 없습니다.

내 생각에는 네가 내 함수에 4 번째 매개 변수가있는 이유는 무엇입니까?

편집 : 3 개의 매개 변수가 있습니다. 그러나 나는 왜 나는 오류가 발생하는지 궁금하다. 이 함수는 정적 라이브러리에 있습니다. 이 라이브러리를 "nm"으로 검색하면 func이 있음을 알 수 있습니다 (아래에서 볼 수 있습니다). 내가 뭘 놓칠지 모르니?

[루트 @ ~/프로젝트/테스트/테스트] # nm의 ../../lib/libredis.a | 그렙 alarmCreate

000000000000073c T_ZN12redisHandler11alarmCreateERKSsRSt6vectorISt4pairISsN5boost3anyEESaIS6_EES1_

+3

"네 번째 매개 변수가 있습니다." 아니야. 꺽쇠 괄호를 세 심하게 조사하십시오. –

+0

함수를 정의하고 링크 했습니까? – nurettin

답변

4

그것은 vector의 템플릿 매개 변수입니다. 모든 표준 컨테이너는 할당자를 가지며, 기본값을 가지고 있으므로이 것에 대해 신경 쓸 필요가 없습니다.

귀하의 방법이 선언되었지만 정의되지 않았을 수 있습니다.

+0

의견을 보내 주셔서 고맙습니다. 컨테이너에 할당자가 포함되어 있다는 것을 알고 있었지만, 대괄호를 제대로 사용하지 못했습니다. –

관련 문제