gpt4 book ai didi

c++ - std::tuple 到成员函数

转载 作者:太空狗 更新时间:2023-10-29 19:59:44 25 4
gpt4 key购买 nike

我仍在尝试掌握元编程,但我被难住了。

我想做的是创建一个类/结构/任何东西,为它提供一个 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;
};

我听说模板中不能有虚函数,但我不知道 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;
};

关于c++ - std::tuple 到成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11709861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com