// 将不同参数和返回值的函数组织到数组里并依次调用
// (目前尚不支持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
函数调用链
最新推荐文章于 2023-05-11 14:25:57 发布
本文详细探讨了C++中的函数调用机制,包括如何利用模板实现函数链,以及在实际编程中如何有效利用函数调用链提高代码效率和可读性。通过实例分析,揭示了函数链在解决复杂问题时的独特优势。
摘要由CSDN通过智能技术生成