기본 클래스에 의해 정의 된 가상 함수 세트를 부분적으로 재정의하는 데 문제가 있습니까? ,C++에서 부분 클래스 함수 재정의 문제
class MyBaseClass
{
public:
virtual void setValue(int);
virtual void setValue(SpecialType*);
}
class MyDerivedClass : public MyBaseClass
{
public:
virtual void setValue(int);
}
이 경고를 제거하는 가장 쉬운 방법은 기본 기능에 다른 이름을 사용하는 것입니다
overloaded virtual function "MyBaseClass::setValue" is only partially overridden in class "MyDerivedClass".
클래스는 다음과 같이 :
제 컴파일러는 다음과 같은 경고를 제공합니다 그러나 나는이 특별한 경고를 고칠만한 강력한 이유가 있는지 알고 싶었다. 나는 이것이 C++ 표준을 위반한다고 생각하지 않는다. 필자는 프로그래머에게 가능한 모든 입력 유형에 대한 동작을 구현하는 것을 잊어 버렸을 것이라고 경고하는 것입니다. 우리의 경우 특정 유형의 일부를 제외하는 것이 의도적입니다.
이 경고가 표시되지 않도록 하시겠습니까?
은 기본 기능에 다른 이름을 사용을 고려하는 경우는 이렇게합니다. MyBaseClass :: setValue (int)는 MyDerivedClass :: setValue (int)와는 다른 개념을 가지고 있으며 나쁘다고합니다. 가상 함수는 기본과 파생에서 동일한 작업을 수행해야합니다. 그렇지 않으면 사소한 변경 사항으로 인해 찾기 힘든 버그를 얻을 수 있습니다. –
제 경우에는 개념 상 동일한 일을하고 있습니다. 이름 바꾸기는 깨끗하게 보이지 않는 setValueFromInt() setValueFromSpecialType()과 같은 것일 수 있습니다. 나는 대답 중 하나에서 설명하는 using 문을 사용하는 것을 선호합니다. 현재이 접근 방식을 조사하고 있습니다. –