RMH*_*157 3 c++ templates virtual-functions variadic-templates iterable-unpacking
我仍然试图摆脱元编程,我很难过.
我想做的是创建一个类/ struct/whatever,为它提供一个std :: tuple并让它根据元组中的对象类型自动生成成员函数.目标是让类派生自MessageHandler
例如
typedef std::tuple< MessageA, MessageB, MessageC > MessageSet;
template< class T >
class MessageHandler
{
// some magic metaprogramming would "create"...
virtual void processMsg( const MessageA& ) = 0;
virtual void processMsg( const MessageB& ) = 0;
virtual void processMsg( const MessageC& ) = 0;
};
Run Code Online (Sandbox Code Playgroud)
我已经读过你不能在模板中使用虚函数,但我不知道C++ 11是否仍然如此.
谢谢.
答案是可变参数模板,部分特化和继承:
//primary template!
template<typename T>
class MessageHandler;
//variadic template, partial specialization and inheritance!
template<typename H, typename ...T>
class MessageHandler<std::tuple<H,T...>> : public MessageHandler<std::tuple<T...>>
{
virtual void processMsg( const H& ) = 0;
};
template<typename T>
class MessageHandler<std::tuple<T>>
{
virtual void processMsg( const T& ) = 0;
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
334 次 |
| 最近记录: |