2013-06-19 2 views
-3

컴파일러에서 클래스의 메서드를 찾을 수 없다고했습니다. 전체 오류 메시지가 이 기능을cpp에서 참조 전달과 값 전달의 차이점은 무엇입니까?

일반 :: 기본 :: CategoryIdCache :: addNewCid (표준 : : 문자열, 일반 :: 기본 :: eSqlCatalog &, 표준 : : 벡터를 찾을 수없는, 표준 : : 할당 > 표준 : 할당, 할당 표준 : "" "&, STD : 벡터, 표준 : 할당> 표준 : 할당, 할당 표준 :" ""&)는

후보이다는

common :: base :: CategoryIdCache :: addNewCid (std :: string &, common :: b ase :: eSqlCatalog &, std :: vector, std :: allocator>, std :: allocator, std :: allocator>>> &, std :: vector, std :: allocator>, std :: allocator, std :: 할당>>> &)

+0

나는 그 질문을 이해하지 못했습니까? 조금 더 자세히 설명해 주시겠습니까? –

+0

오류 메시지가 나에게 분명하게 보입니다. 값 (std :: string) 대신 첫 번째 인수 (문자열)를 참조 (std :: string &)로 전달해야합니다. – Kippie

+0

오류 메시지가 명확하게 관련되어 있습니다 ('std :: string'을 전달 중입니다. 후보자는'std :: string &')하지만 코드가 없으면 무엇이 잘못되었는지 알기가 어렵습니다. –

답변

3

가 이런 일이 될 수있는 이유는 몇 가지 이유는 다음과 같습니다

  • 당신도 다른 서명
  • 있는 기능을 구현하고 또는 임시을 결합하려고 시도 비 const 참조로

그래서

struct X 
{ 
    void foo(std::string& x); 
}; 

//implementation 
void X::foo(std::string x); //wrong - different signature 

또는 참조로 전달

struct X 
{ 
    void foo(std::string& x); 
}; 

// 
int main() 
{ 
    X x; 
    x.foo("some string"); 
} 
+0

이 방법을 시도했지만 효과가 없습니다. – DraculaW

0

값으로 전달하는 u're가에 포함 된 값을 복사하는 수단 동안 u're 함수에 변수의 주소 (참조) 전달 수단 해당 변수에 의해 그 순간을 결정한 다음 함수에 전달합니다.

값을 전달하는 방식과 다른 방식으로 프로토 타입 또는 함수를 선언 했어야합니다.

관련 문제