gpt4 book ai didi

c++ - 具有两个或多个变量的仿函数

转载 作者:行者123 更新时间:2023-12-03 12:50:05 26 4
gpt4 key购买 nike

我对 C++11 有点陌生,我读过 this关于仿函数的帖子非常有帮助,我只是想是否有可能制作一个接收多个单个变量的仿函数?例如我们有下面的类:

class my_functor{
public:
my_functor(int a,int b):a(a),b(b){}

int operator()(int y)
{
return a*y;
}

private:
int a,b;

};

现在我想知道有没有什么方法可以让我们创建一个像这样的成员函数

operator()(int y)

但收到 2 个或更多(或未知数量!)变量?

最佳答案

是的。您可以将任意数量的参数传递给 operator() 。参见示例:

#include <iostream>
class my_functor{
public:
my_functor(int a,int b):a(a),b(b){}

int operator()(int y)
{
return a*y;
}

int operator()(int x, int y)
{
return a*x + b*y;
}

private:
int a,b;
};

int main()
{
my_functor f{2,3};
std::cout << f(4) << std::endl; // Output 2*4 = 8
std::cout << f(5,6) << std::endl; // Output 2*5 + 6*3 = 28
return 0;
}

要处理未知数量的参数,您需要查看处理可变数量参数的各种解决方案(基本上是 #include <varargs.h> 或模板参数包)。

关于c++ - 具有两个或多个变量的仿函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40451263/

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