有没有办法让模板类参数可选? 特别是在这个例子中:
template <typename EVT>
class Event : public EventBase {
public:
void raise(EVT data){
someFunctionCall(data);
}
}
我想要一个与此相同的模板版本:
class Event : public EventBase {
public:
void raise(){
someFunctionCall();
}
}
但我不想复制所有代码。有可能吗?
答案 0 :(得分: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会是什么样子。