gpt4 book ai didi

c++ - 函数模板

转载 作者:搜寻专家 更新时间:2023-10-31 00:48:21 26 4
gpt4 key购买 nike

我被告知创建函数模板,它将采用 4 个参数:

  • 指针
  • 引用资料
  • 指向数组的指针
  • 函数指针

如何执行此任务?我在尝试:

#include <iostream>
using namespace std;

int nothing(int a)
{
return a;
}

template<typename T> T func(int *L, int &M, char *K, int (*P)(int))
{
cout << L << "," << M << "," << K[0] << "," << P() << endl;
return 0;
}

int main()
{
int x = 3;
int *z = &x;
int &y = x;
char c[3];
int (*pf)(int) = nothing;

cout << "some result of func" << func(z, y, c, pf) << endl;

system("pause");
return 0;
}

这给了我“没有匹配的功能,我猜是‘pf’。现在我也无法控制在 pf 中传递什么,或者我错了吗?

最佳答案

你快到了。但是,在 C++ 中,引用用 &(不是 $)表示,指向数组的指针是指向其第一个元素的指针,函数指针需要额外的括号: T (*pf)()

请注意,它称为函数模板(相对于类模板)。

编辑:(您不应该编辑您的问题,以免到目前为止给出的答案突然变得荒谬。)

pf(x) 调用存储在pf中的函数。 pf 已经一个函数指针,所以按原样传递它。
(此外,在您的声明中,P 是一个接受 X 的函数,而 pf 接受一个 int。我想这是编辑错误?)

请注意,对于函数指针,涉及 1..N 种类型、一种结果类型和 0..N 种参数类型。 “创建一个函数模板,它将接受一个指向函数的指针”可能意味着任何一个。或者是什么意思

template< typename F >
void f(F func);

可以用任何函数指针调用。

关于c++ - 函数模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2720277/

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