c++ - 具有特定参数列表的函数指针

标签 c++ c++11

相当简单的问题:

我有一个使用(可变)启发式函数来执行特定算法的类。理想情况下,这个启发式函数应该作为某种指针提供给类构造函数并实现以下声明:

int heuristic_Function(GridLocation a, GridLocation b);

实现此目标的最佳方法是什么?理想情况下,我希望避免额外的类并保持代码相当独立(是的,我知道诸如委托(delegate)和策略模式之类的事情)。

(这可能已经被问过数百次,但用的是不同的术语)

最佳答案

好吧,正如您所说,您可以存储一个函数指针:

struct Algo
{
    using HeurFn = int(GridLocation, GridLocation);

    Algo(HeurFn * heuristic) : heuristic_(heuristic) {}

    void Run()
    {
        // use "heuristic_(a, b)"
    }

    HeurFn * heuristic_;
};

然后实例化它:

extern int my_fn(GridLocation, GridLocation);
Algo algo(my_fn);
algo.Run();

另一种方法是将函数直接传递给 Run,在这种情况下,您可以使 Run 成为一个模板,并可能允许内联实际的启发式代码,但是您明确要求通过构造函数配置启发式。

关于c++ - 具有特定参数列表的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34387119/

相关文章:

macos - 如何在 mac 上编译 GCC,以便编译后的可执行文件可以在早期版本的 OS X 上运行?

java - 正则表达式性能 java vs c++11

c++ - 为什么这个 move 构造函数如此贪婪?

c++ - 初学者的 Makefile (C++)

c++ - 通过对象指针访问成员

c++ - #pragma pack 在 C++ 中

c++ - 我应该对字符串使用 unique_ptr 吗?

c++ - ROS "catkin_make"找不到OpenCVConfig.cmake

c++ - 从 C++ 源代码创建类图?

c++ - 返回其参数或检查 nullptr 的函数