0
이 코드 라인 3.수정할 수없는 순환 종속성이
class IKeyEvent;
class EventDispatcher : private IKeyEvent {
public:
enum EEActions {
A_FEW_ACTIONS
};
private:
void OnKey(EventDispatcher::EEActions action, char multiplier);
}
class IKeyEvent {
public:
virtual void OnKey(EventDispatcher::EEActions action, char multiplier) = 0;
};
가 이해할 정의 될 때까지이 클래스에서 상속 할 수 없습니다에 error C2504: 'IKeyEvent': base class undefined
을 제공합니다. 그러나 을 까지 정의 할 수 없습니다.EventDispatcher
이 정의 된 후에는 정의 할 수 없습니다.
나는 Event Dispatcher
정의에서 그 enum
정의를 전역으로 만들 수 있지만 프로그램의 많은 부분을 리팩토링해야한다는 것을 알고 있습니다. EventDispatcher
을 EventDispatcher
에 종속 된 클래스에서 상속받을 수있는 방법이 있습니까?
'수정할 수 없음'이 맞습니다. – SLaks
파생 클래스에서 선언 된 형식을 필요로하는 기본 클래스? 근본적으로이 OO 디자인에서 잘못된 점이 있습니까? –
@Murali : 분명히 이것은 리팩토링 문제입니다. IKeyEvent가 추가되고 EventDispatcher가 사용되었습니다. 인터페이스를 추가하는 것이 근본적으로 잘못되었다고 생각하지 않습니다. –