剖析并实现C++17新特性的Any类型

问题:

对于这样的场景:对于一些CS(客户端-服务端)模型,当用户在客户端传入相应的事件时,我们需要实现框架即在服务端去分配线程处理这些事件,即调用用户的事件处理函数,那么对于不同的用户的事件函数,如何统一在服务端进行处理呢,那么容易想到的一个方法就是多态,如下:

class Task  // 服务端实现的
{
public:
	Task();
	~Task() = default;
	// 用户可以自定义任意任务类型,从Task继承,重写run方法,实现自定义任务处理
	virtual Any run() = 0;

};
class MyTask : public Task //用户端想要处理的事件
{
public:
    MyTask(int begin, int end)
    {}
    Any run() 
    {
        ... //用户的事件
        return sum; //处理的结果返回
    }

};

此时服务端,就可以调用派生类的run方法实现用户的事件了,此时问题就出现了,那么用户如何获取事件处理的返回结果呢,要知道多态重写的是同名函数,包括返回值,所以我们需要一个统一的Any类型接收任意类型的参数返回,如int、string、vector等,如上所示

ps:模板和继承无法共存,也就是不能给run方法添加模返回参数,只能使用自定义的Any类型接收所有的返回类型。

简要来说,我需要一个统一类型接收所有类型&

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值