gpt4 book ai didi

c++ - 指向模板函数的函数指针

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

我有两个模板化函数签名。这里的 T 可以是 int 或 double。

template <typename T>
Box<T> f2p(Box<T> const& box, Point<T> const& pt, Orientation o)
{
...
}

template <typename T>
Box<T> p2f(Box<T> const& box, Point<T> const& pt, Orientation o)
{
...
}

现在根据方向,我想调用 f2p 或 p2f。我想创建一个指向 f2p 或 p2f 的函数指针。如何创建指向模板函数的函数指针?我想实现如下效果:

typename <template T>
Box<T> do_transformation(Box<T> const& box, ..., int dir = 0)
{
function pointer p = dir ? pointer to f2p : pointer to p2f

return p<T>(box);
}

我尝试了类似的操作,但出现了编译错误:

Box<T> (*p)(Box<T>, Point<T>, Orientation) = dir ? fc2p<T> : p2fc<T>

最佳答案

I try something like this but I get compile errors:

Box<T> (*p)(Box<T>, Point<T>, Orientation) = dir ? f2p<T> : p2f<T>

仔细查看您的函数采用的参数:

template <typename T>
Box<T> f2p(Box<T> const& box, Point<T> const& pt, Orientation o)
^^^^^^^^ ^^^^^^^^

所有参数都必须完全匹配。在这种情况下:

Box<T> (*p)(Box<T> const&, Point<T> const&, Orientation) = dir ? f2p<T> : p2f<T>;

或者,简单地说:

auto p = dir ? f2p<T> : p2f<T>;

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

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