class A {};
class B : A {};
class C {
virtual B *f() { returnNULL ; }
};
class D : C {
virtual A *f() { returnNULL ; } //Error: overriding virtual function with different return type
};
class C;
class A {
virtual A *f() { returnNULL ; }
};
class B : A {
virtual C *f() { returnNULL ; } //Error: overriding virtual function with different return type
};
class C : B {
virtual C *f() { returnNULL ; } //нормально
};
Ilyas : 오류에도 불구하고(실행 파일의 생성이 없기 때문에) 함수 B::f는 A::f를 재정의하므로 C::f에 대한 재정의 오류는 없습니다.
요점을 잘 이해하지 못했지만 거의 동일합니다.
class C;
class A {
virtual A *f() { returnNULL ; }
};
class B : A {
virtual C *f() { returnNULL ; } //Error: overriding virtual function with different return type
};
class C : A {};
class C;
class A {
virtual A *f() { returnNULL ; }
};
class C : A {};
class B : A {
virtual C *f() { returnNULL ; } //нормально
};
어떤 이유로 템플릿 클래스의 템플릿 메서드를 컴파일러에서 찾지 못하고 오류가 발생했을 때 지금 누가 어떤 방식으로 문제를 해결하고 있습니까?
no one of overloads can be applied to the function call
?
이러한 경우 Sish 컴파일러는 대체된 유형과 프로토타입이 발견되지 않은 기능을 구체적으로 작성하므로 문제가 무엇인지 다소 명확하지만 여기에는 구체적이지 않습니다.
이것은 직접 상속에 문제가 없기 때문에 의식적으로 수행되었습니다.
정확한 규칙을 알고 싶습니다. 어떤 경우에 다른 반환 유형 으로 가상 함수를 재정의할 수 있는 권한이 있습니까?
아니면 과부하입니까?
정확한 규칙을 알고 싶습니다. 어떤 경우에 다른 반환 유형 으로 가상 함수를 재정의할 수 있는 권한이 있습니까?
고맙습니다. 공습 경보 해제.
.. 재정의된 함수의 반환 형식이 상속된 경우 ... 재정의된 함수가 반환하는 형식에서.
그 반대라면?
그 반대라면?
예제에 오류가 있습니다. C에서 D를 상속받지 않습니다.
예, 제가 잘못했습니다. 죄송합니다.
또 다른 논란의 예:
또 다른 논란의 예:
오류에도 불구하고(실행 파일의 생성이 없기 때문에) 함수 B::f는 A::f를 재정의하므로 C::f에 대한 재정의 오류는 없습니다.
요점을 잘 이해하지 못했지만 거의 동일합니다.
한 경우에는 틀리고 다른 경우에는 그렇지 않습니다. 라인만 바꿨어요