我可以在C中使用仿函数吗?我的意思是例如在C++中我可以这样做:
struct Rules
{
operator()(/*maybe some args*/)
{
}
};
Run Code Online (Sandbox Code Playgroud)
一些(虚构的)算法:
int sort(iter beg, iter end, Rules);
Run Code Online (Sandbox Code Playgroud)
我可以在C中做同样的事吗?
不一样,没有.C不支持结构的成员函数,也不支持运算符重载.
但是,您可以传递和存储函数指针.您可以sort使用比较函数指针获取结构,并调用传递的函数.有关示例,请参阅qsortC标准库...
qsort(void *base, size_t nel, size_t width, int (*compar)(const void *, const void *));
Run Code Online (Sandbox Code Playgroud)
最后一个参数是一个排序比较函数指针.你可以创建一个结构,如...
struct Rules_t
{
int (*comparisonRule)(const void *, const void *);
} Rules;
Run Code Online (Sandbox Code Playgroud)
然后传递这个结构的实例围绕调用,例如myRules->comparisonRule(a, b).
| 归档时间: |
|
| 查看次数: |
231 次 |
| 最近记录: |