我有两个函数,在比较我传递给函数的两个值后返回一个 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
指向带有可变参数列表的函数的指针,但即使这样的函数可以采用 int
或 float
参数,该指针将不是引用您提供的任何一个函数的正确类型。
关于c++ - C++ 中的 typedef 总结和定义一个具有两个函数的新类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25826830/