gpt4 book ai didi

c++ - 将函数名称作为参数传递给函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:52:53 25 4
gpt4 key购买 nike

是否可以将一个函数的名称(比如A)作为参数传递给另一个函数(比如B),然后从函数B调用函数A。也就是说,函数名将存储在B中的一个变量中,并使用它调用名称在变量中的函数。例如,在 C++ 排序函数中,第一个和第二个参数是迭代器,但第三个参数是函数的名称。

最佳答案

你可以为“任何可以用两个参数调用的东西”引入一个模板参数(这里是Pred):

template <typename Iter, typename Pred>
void mysort(Iter begin, Iter end, Pred predicate)
{
--end;
// ...
if (predicate(*begin, *end))
{
// ...
}
// ...
}

然后您可以传递良好的旧 C 函数指针或 C++ 函数对象:

bool function(int x, int y)
{
return x < y;
}

struct function_object
{
bool operator()(int x, int y)
{
return x < y;
}
};

int main()
{
int numbers[] = {543, 6542654, 432514, 54, 45, 243};
mysort(numbers + 0, numbers + 6, &function);
mysort(numbers + 0, numbers + 6, function_object());
}

如您所见,函数对象是适当重载 operator() 的类的对象。

关于c++ - 将函数名称作为参数传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6356303/

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