class A { };
class B : public A { };
A* a = new B;
B* b= dynamic_cast <B*>(a); // cannot dynamic_cast ‘a’ (of type ‘class A*’) to type ‘class B*’ (source type is not polymorphic)
B* b1= a; // invalid conversion from ‘A*’ to ‘B*’ [-fpermissive]
나는 내일(10년이 아니라) 구현될 수 있는 가장 간단한 옵션을 제안했고 C++와 외부 유사성을 가질 것입니다(그렇지 않으면 왜 아무 것도 변경하지 않는 이유). 또한 operator*()가 수행되지 않았고 수행되지 않을 경우(포럼에 이에 대한 정보가 있음) operator->()가 갑자기 구현되는 이유가 명확하지 않습니다(같은 순서임)
기본 클래스가 파생 클래스로 암시적으로 캐스트되는 버그가 MQL에서 여전히 수정되지 않는 이유는 무엇입니까? 컴파일러 경고 도 아닙니다!
아마도 이 올바른 디자인 때문에
당신의 것을 고려하지 않았습니다.
아마도 이 올바른 디자인 때문에
당신의 것을 고려하지 않았습니다.
이것은 정확히 같은 잘못된 디자인입니다.
기본 클래스에 대한 포인터 다음에 파생 개체가 오면 이는 훌륭한 구성입니다.
기본 클래스에 대한 포인터 다음에 파생 개체가 오면 이는 훌륭한 구성입니다.
나는 논쟁하지 않고 이것이 실수라고 단순히 믿기 를 제안합니다.
이 동사는 기술 포럼에서 제대로 적용되지 않습니다. 시도한 C++
어떤 옵션도 작동하지 않았습니다. 이유는 명확하지 않습니다.
그것들을 교환 가능하게 만들면 둘 다 단순히 필요하지 않습니다.
C++에서는 다음이 가능합니다.
나는 내일(10년이 아니라) 구현될 수 있는 가장 간단한 옵션을 제안했고 C++와 외부 유사성을 가질 것입니다(그렇지 않으면 왜 아무 것도 변경하지 않는 이유). 또한 operator*()가 수행되지 않았고 수행되지 않을 경우(포럼에 이에 대한 정보가 있음) operator->()가 갑자기 구현되는 이유가 명확하지 않습니다(같은 순서임)
기본 클래스가 파생 클래스로 암시적으로 캐스트되는 버그가 MQL에서 여전히 수정되지 않는 이유는 무엇입니까? 컴파일러 경고 도 아닙니다!
컴파일 오류를 예상하고 있습니까? 이 경우에는 dynamic_cast이기 때문에 그렇게 해서는 안 됩니다.
위를 참조하십시오. fxsaber는 C++ 코드를 제공했습니다.
컴파일
컴파일