문제가 있지만 올바르게 해결 한 경우 또는 더 정확한 방법이 있는지 모르겠습니다. 항등 연산자 과부하, I 파생에베이스 객체에 CONST 기준을 전송해야하기파생 된 const 기본 참조 캐스팅
class Data_Base
{
...
}
class Data_Error : public Data_Base
{
...
}
:
이제 I는 두 클래스 (다른 하나 상속)가 객체를 다시 테스트하여 멤버를 테스트합니다. 현재 나는이 일을 해요 :
이제bool Data_Error::operator==(const Data_Base &other) const
{
if (Data_Base::operator !=(other))
return false;
const Data_Error &other_cast = (const Data_Error &)other;
... More tests on other_cast ...
}
는, 캐스트 순간에 other
변수가 Data_Error
이상의 뭔가가 Data_Base
==
연산자 (그리고 !=
운영자 이후이라고 가능성이없는,이 구현되어 있기 때문에 ==
의 부정으로) 또한 파생 된 객체의 유형을 검사하므로 유형이 올바른 경우에만 해당 행에 도달합니다.
이제이 문제가 있습니까? "더 정확한"해결책이 있습니까?
Qt (5.7)로 작업하고 있으므로 "QTish"솔루션이 더 있습니까?
왜 'Data_Error'를'Data_Base' 자손과 비교합니까? 계층 구조의 여러 분기에서 유형을 비교할 때 어떤 의미가 있습니까? 'bool Data_Error :: operator == (const Data_Error & other) const'를 고수하면됩니다. – StoryTeller
@StoryTeller 기본 유형의 목록이있을 때 항목 중 일부와 동일한 지 확인하기 위해 반복합니다. 나는 단순히 모든 항목에 ==를 부른다. 함수에서 유형이 동일한 지 확인합니다. 그렇지 않으면 유형이 동일하지 않습니다. 그러나이 목적을 위해, 다른 타입은 기본 타입이어야합니다. 그렇지 않으면 프로그램은 두 개의 다른 브랜치를 비교하는 방법을 모릅니다. – frarugi87
'연산자 =='가상입니까? 그렇지 않은 경우 예상대로 작동하지 않습니다. – StoryTeller