2011-02-02 5 views
0

IBase 클래스가 있습니다. 거기 그것은 다른 기능에서 사용된다. C++ 상속 - 왜 내 함수가 사용되지 않았습니까?

나는 지금은 C에서 CastData가 기본 클래스에서 CastData을 overrite하는 새로운 클래스를 생성 할

virtual void CastData(){ 
    for (FunctionIterator it(funcs.begin()); it != funcs.end(); ++it){ 
     DataType dataCopy; 
     dataCopy = *dataElement; 
     (*it)(dataCopy); 
    } 
} 

와 다른 완전히 관련이없는 클래스 IC 있습니다. 공공 ibase와, IC

제대로 실행의 모든 ​​기능을 공개 :

그래서 나는 클래스 IGraphElement 같은 것을보십시오. 모든 IC 기능이 실행되지만 IBase CastData는 덮어 쓰지 않습니다.

상속받은 다른 클래스에서 가상 함수를 상속 한 클래스의 가상 함수가 상속하는 경우 이러한 유형의 오버 라이드를 수행하는 방법은 무엇입니까?

+1

왜 기능을 더 잘 지정할 수 없습니까? –

+2

이 영어 설명은 모두 혼란 스럽습니다. 문제를 나타내는 컴파일 가능한 코드를 제공하지 않을 때. –

+0

동일한 서명을 가진 두 함수가있는 두 개의 기본 클래스를 사용하면 모호한 호출이 발생하므로 컴파일하지 않아야합니다. –

답변

1

가상 함수는 다른 기본 클래스가 아닌 파생 클래스에 의해 재정의되어야합니다. IGraphElement에서 IC를 호출하여 작업을 수행하는 재정의 기능을 제공했을 수도 있습니다.

1

모두에 대해 CastData를 재정의하려는 경우 인터페이스를 추상화하고 IC 및 IBase를 동일한 인터페이스에서 파생시킬 수 있습니다. 그러나 IBase와 IC가 완전히 관련이없는 클래스를 지적하면 IGraphElement가 IBase와 IC의 CastData를 정상적으로 오버라이드 할 수 있다고 기대해서는 안됩니다.

관련 문제