C++ 如何使类模板参数成为可选参数?
有没有办法使模板类参数可选?C++ 如何使类模板参数成为可选参数?,c++,templates,C++,Templates,有没有办法使模板类参数可选? 具体而言,在本例中: template <typename EVT> class Event : public EventBase { public: void raise(EVT data){ someFunctionCall(data); } } 但是我不想重复所有的代码。是否可能?使用默认模板参数和模板专用化: template <typename EVT=void> clas
具体而言,在本例中:
template <typename EVT>
class Event : public EventBase {
public:
void raise(EVT data){
someFunctionCall(data);
}
}
但是我不想重复所有的代码。是否可能?使用默认模板参数和模板专用化:
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();
}
};
模板
类事件:公共事件库{
公众:
无效上升(EVT数据){
someFunctionCall(数据);
}
};
模板
类事件:公共事件库{
公众:
作废{
someFunctionCall();
}
};
但是,我看不出EventBase是什么样子。请注意,这确实需要您重新定义所有成员,或将它们移动到共享基类。还要注意,实例化专门化有一个意外的语法:
Event MyEvent代码>@MooingDuck我正要问这个!另一个选项是将默认类设置为非模板类。@VJo:那么它必须有一个不同的名称。
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();
}
};