c++ - C++ 中的 typedef 总结和定义一个具有两个函数的新类型

标签 c++ function typedef

我有两个函数,在比较我传递给函数的两个值后返回一个 bool 值。现在的问题是我们如何使用以下两个函数编写 typedef 来表征它们并定义新类型?

 functions: 
    bool compare1(float n1, float n2){
      return n1<n2;
    }

    bool compare2(int n1, int n2){
      return n1<n2;
    }

最佳答案

我看不出 typedef 在这里有多大用处,但模板肯定可以:

template <class T>
bool compare(T n1, T n2) { 
   return n1 < n2;
}

请注意,这与 std::less<T> 几乎相同已经提供,除了std::less<T>具有特化,因此它适用于 n1<n2 的某些类型不一定会给出有意义的结果。这意味着这个确切的案例不是很实用,但一般想法的其他案例可以。

对于原始情况,您不能真正使用 typedef .您可以创建一个 typedef对于指向其中一个函数的指针的类型:

typedef bool (*ptr_func)(int, int);

但这仍然需要指定参数类型,因此您不能使用它来引用两个采用 int 的函数。采用 float 的参数和函数参数。您可以创建一个 typedef指向带有可变参数列表的函数的指针,但即使这样的函数可以采用 intfloat参数,该指针将不是引用您提供的任何一个函数的正确类型。

关于c++ - C++ 中的 typedef 总结和定义一个具有两个函数的新类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25826830/

相关文章:

c++ - 为什么转发引用需要 std::forward

c++ - 加载字体时 Allegro 5 崩溃

function - ffmpeg - 如何分别处理视频和音频 URL 的流?

c++ - 将模板 typedef 作为参数传递给函数模板

c++ - 来自 typedef 结构的错误

C-Qsort : Sort name in ascending order and grade in descending order

c++ - 圆上的点,有极限。没有角度,只有半径和中心点如何计算?

c++ - 带有枚举解释的隐式非运算符(!)?

javascript - 如何扩展 JavaScript 对象/函数以在初始化后公开 API 方法?

php - 使用仅工作一次的 jquery 加载函数重新加载 div 以及如何传递变量