2011-09-22 2 views
1

템플릿 클래스 인수를 선택적으로 만들 수있는 방법이 있습니까? 특히이 예에서는
는 :클래스 템플릿 인수를 선택적으로 만드는 방법은 무엇입니까?

template <typename EVT> 
class Event : public EventBase { 
public:    
    void raise(EVT data){ 
     someFunctionCall(data); 
    } 
} 

나는이 동일한 템플릿 상당의 버전을 갖고 싶어 :

class Event : public EventBase { 
public:    
    void raise(){ 
     someFunctionCall(); 
    } 
} 

을하지만 모든 코드를 복제하고 싶지 않아요. 가능한가? 기본 템플릿 인수 및 템플릿 특수화와

답변

3

:

template <typename EVT=void> 
class Event : public EventBase { 
public:    
    void raise(EVT data){ 
     someFunctionCall(data); 
    } 
}; 

template <> 
class Event<void> : public EventBase { 
public:    
    void raise(){ 
     someFunctionCall(); 
    } 
}; 

그러나, 나는 EventBase의 모습 표시되지 않습니다.

+0

모든 구성원을 재정의하거나 공유 기본 클래스로 이동해야합니다. –

+0

전문화를 인스턴스화 할 때 예기치 않은 구문이 있음을주의하십시오.'Event <> MyEvent; ' –

+0

@MooingDuck 나는 그 질문을 할 것입니다! – Damian

관련 문제