2013-03-02 3 views
1

저는 C++ 코드를 탐색 중이므로 뭔가를 발견했습니다. 소스 파일 main.cpp네임 스페이스가없는 메서드 호출

std::cout << converter(); 

그런 다음 변환기 정의를 찾았습니다. 네임 스페이스와 클래스 이름은 없습니다. 그런 다음 tool.cpp에서 보았습니다.

using namespace Ccon::converter; 

정의는 Ccon.cpp 파일에 있습니다.

main.cpp가 converter()을 호출 할 수있는 이유는 무엇입니까?

알려 주시기 바랍니다.

감사

+1

"인수 별 조회"를 검색하십시오. – jrok

+2

C++에 관한 좋은 책을 읽으십시오. 제 조언은 –

+0

입니다. 인터넷에서'네임 스페이스 사용하기 C++ '이 제 조언입니다. – antonijn

답변

-2

인수 종속적 이름 조회를위한이 링크를 참조하십시오 : 컴파일러가 적정 converter()가 사용할 네임 스페이스를 찾습니다를 찾을 수없는 및 경우이를 사용하는 경우 http://en.wikipedia.org/wiki/Argument-dependent_name_lookup

을 이름과 서명 성냥.

이 경우 main.cpp에는이 네임 스페이스를 정의한 Ccon.h 헤더 파일이 포함되어 있으므로 void 인수가있는 converter()을 찾습니다.

+1

여기에 적용됩니까? 변환기에 대한 인수가 없습니까? –

+0

인수 의존 룩업을 설명하는 방법은 인수와 아무 관련이 없습니다. 사실 이것이 사실이라면 네임 스페이스는 전혀 의미가 없습니다. – jogojapan

+0

함수 signature, 함수의 이름, 입력 인자의 타입, 출력 타입에 signature를 언급했다. 인수는 서명이 될 수 없습니다. 네, jogojapan, http://en.wikipedia.org/wiki/Argument-dependent_name_lookup#Criticism을 읽으면 덜 엄격한 네임 스페이스에 대해 이야기합니다. ADL과 이것이 ADL에 대한 비판이기 때문입니다. – ruben2020

관련 문제