gpt4 book ai didi

c++ - 如何在 C++ 中传递一个 std-functor 并在不知道它具体是哪个的情况下使用它

转载 作者:行者123 更新时间:2023-11-30 00:41:02 28 4
gpt4 key购买 nike

我这里有一个类似于排序算法的东西,我想将它传递给一个仿函数,它提供排序标准 (std::binary_function)。因此,如果给出了 std::less,它应该调用 T.operator<()。

问题是,成员函数 operator() 不是虚函数。所以我需要知道给出了哪种类型的对象,以执行不太好的动态转换。

问候,

丹尼斯

最佳答案

Problem is, the member function operator() is not virtual. So I need to know which type of object was given, to perform a dynamic cast which is not really nice.

为什么要进行动态转换?通常你不需要那个。只需像调用普通函数一样调用仿函数的 operator()

仿函数的全部意义在于它们的行为就像普通函数一样,您将模板参数传递到算法中(不是吗?)以处理不同的仿函数(和函数)类型。

当然,这整件事的前提是您实际上将模板参数传递给您的函数。 std::binary_function 适合作为虚拟基类。它的存在只是为了定义一些方便的 typedef。因此,您的函数声明应如下所示:

template <typename TBinaryFunction>
void your_algorithm(rest of parameters …, TBinaryFunction f);

关于c++ - 如何在 C++ 中传递一个 std-functor 并在不知道它具体是哪个的情况下使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4605645/

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