clang은 다음 코드를 컴파일 할 때 경고를 내 보냅니다.
struct Base
{
virtual void * get(char* e);
// virtual void * get(char* e, int index);
};
struct Derived: public Base {
virtual void * get(char* e, int index);
};
경고는 다음과 같습니다.
warning: 'Derived::get' hides overloaded virtual function [-Woverloaded-virtual]
(물론 상기 경고를 활성화해야합니다).
이유를 모르겠습니다. Base에서 동일한 선언을 주석 해제하면 경고가 종료됩니다. 내 이해는 두 개의 get () 함수가 다른 서명을 갖기 때문에 숨길 수 없다는 것입니다.
clang이 맞습니까? 왜?
이것은 최신 버전의 Xcode를 실행하는 MacOS X에 있습니다.
clang --version
Apple LLVM version 5.0 (clang-500.1.74) (based on LLVM 3.3svn)
업데이트 : Xcode 4.6.3과 동일한 동작.
get
정적 유형의 객체에 대해 단일 인수를 사용 하여 함수 멤버를 호출 할 수 있습니다Derived
. using 선언이 없으면 같은 일로 컴파일 오류가 발생합니다.