C++ 如何在C++;
我试图修饰一个非递归函数。但是对于递归函数,我找不到同样的方法。在C++中,现在是否可能? 我从一个简单的递归函数开始C++ 如何在C++;,c++,recursion,decorator,C++,Recursion,Decorator,我试图修饰一个非递归函数。但是对于递归函数,我找不到同样的方法。在C++中,现在是否可能? 我从一个简单的递归函数开始 uint64\u t fib(uint64\u t n) { if(n秒; } }; 但是这不起作用。递归总是发生。也许这不是向递归函数添加装饰器的方法。 < P>不能在C++中装饰递归函数。递归调用静态绑定到原始函数。 您可以装饰一个调用它期望的名称的可调用项 using fib_type = std::function<uint64_t(uint64_t)>;
uint64\u t fib(uint64\u t n)
{
if(n秒;
}
};
<>但是这不起作用。递归总是发生。也许这不是向递归函数添加装饰器的方法。 < P>不能在C++中装饰递归函数。递归调用静态绑定到原始函数。 您可以装饰一个调用它期望的名称的可调用项
using fib_type = std::function<uint64_t(uint64_t)>;
fib_type fib = [](uint64_t n)
{
if (n <= 1)
return n;
return fib(n - 2) + fib(n - 1);
};
fib = memoized(fib);
使用fib_type=std::函数;
fib\u类型fib=[](uint64\u t n)
{
如果(n)“装饰”是什么意思这个术语在C++中没有一个普遍认可的意思。此外,请向我们展示你所尝试过的。意思是:应用一个装饰器。pattern@debashish.ghosh你是说python中的函数装饰器吗?也许是模板?看起来像decorators@debashish.ghosh经典的装饰器模式应用于类而不是函数。当然,其他语言中也有函数装饰器(是的,您可以在C++中模拟它们).所以,再一次,请告诉我们你尝试过什么。-也就是说,我猜你要找的是,例如Y组合子。你是对的。函数不是正确的实体。在调整装饰器以采用std::function后,它成功了。谢谢。