// 将不同参数和返回值的函数组织到数组里并依次调用
// (目前尚不支持void函数)
#include <vector>
#include <memory>
#include <iostream>
#include <functional>
#include<string>
#include <sstream>
using namespace std;
// 基类
class LinkedFunctionBase
{
public:
LinkedFunctionBase() = default;
virtual ~LinkedFunctionBase() = default;
// 设置下一个函数
void SetNextLinkedFunction(std::shared_ptr<LinkedFunctionBase> next)
{
next_ = next;
}
protected:
std::shared_ptr<LinkedFunctionBase> next_;
};
// 各种不同参数的函数
template<typename P>
class LinkedFunctionP : public LinkedFunctionBase
{
public:
// 调用自身函数, (如果有)调用下一个函数
virtual void dosome_and_next(P p) = 0;
};
// 不同参数和返回值的函数
template<typename R, typename P>
class LinkedFunctionPR : public LinkedFunctionP<P>
{
public:
// 实际功能函数函数
virtual R dosome(P p) = 0;
// 调用自身函数, 然后调用下一个函数
virtual void dosome_and_next(P p)
{
if (next_ == null
函数调用链
最新推荐文章于 2024-10-18 11:39:49 发布