나는이 메서드에 func(int, float, unsigned)
및 오버로드를 포함하는 기본 클래스를 가지고이 메서드는 func(int)
이고 추상 메서드는 을 구현하는 파생 클래스입니다. 내 코드에서 C++ : 파생 된 인스턴스에서 순수 가상 메서드의 오버로드 호출
class Base
{
public:
virtual void func(int x, float y, unsigned z) = 0;
void func(int x)
{
cout << "func with x only" << endl;
}
};
class Derived : public Base
{
public:
void func(int x, float y, unsigned z)
{
cout << "func override" << endl;
}
};
, 나는 기본
func(int)
의 오버로드 된 메서드를 호출하는 파생 클래스의 인스턴스를 가지고있다. 이 코드 조각을 컴파일에서
int main()
{
Derived d;
d.func(10); // <<--------- 'COMPILATION ERROR'
return 0;
}
, 나는 다음과 같은 컴파일 오류가 얻을 :
error: no matching function for call to 'Derived::func(int&)'
note: candidates are: virtual void Derived::func(int, float, unsigned int)
무엇의이 오류/대한 이유는이 코드가 작동하지 않는 이유는 무엇입니까?
이 감사했다. 내가 오버라이드하지 않는 func을 '오버로드'한다는 것을 알고있다. 나는 이미이 질문에 이것을 썼다. 그러나 기본 클래스의 다른 메소드들처럼'using' 키워드가 없으면 작동하지 않는 이유를 알지 못했습니다. – Devos
@ user2758900 이름 숨기기에 관한 것입니다. – billz
@ Bathsheba : 어쩌면. 시맨틱에 대해 토론하기에는 너무 이른 월요일이므로 내 의견을 삭제하겠습니다. –