다음 클래스가 있습니다.전화 기본 클래스 함수
class A
{
public:
void fun();
}
class B: public A
{
}
class C: public A
{
}
A * ptr = new C;
다음과 같이하면 되나요? baseclass에 몇 가지 가상 함수를 도입하면 몇 가지 문제가 있습니까?
((B *)ptr)->fun();
이것은 어리석은 것처럼 보일 수 있지만 B를 통해 A의 기능을 호출하는 기능이 있으며 변경하고 싶지 않습니다.
예가 다소 모호합니다. B와 C가 재미를 재정립합니까? 실제로 컴파일되는 코드를 게시 할 수 있습니까? 예를 들어, ((B *) ptr) -> fun()를 써야만한다. 그렇지 않으면 함수의 반환 값을 B *로 변환한다. –
"B를 통해 A의 함수를 호출하는 함수가 있습니다."는 실제로 의미합니다. 전화 해줘? 이것은 디자인이 실패한 것처럼 보입니다. –
코드에 뭔가 해킹하려고 시도하는 대신 모델을 다시 생각해야한다고 생각합니다. 예를 들어, 호출하려는 코드가 A에서 구현되지 않고 B에서 구현되는 이유는 무엇입니까? –