我想在c中实现一个类b,它可以通过封装迭代器类型的成员集进行某种迭代.喜欢:
b_object.for_each_x_do(function_f);
所以function_f将获得x成员的每个人并做任何事情.让我们说:
void function_f(x_member_type x){ cout << x << endl; }
好.所以我试图通过以下代码实现这一目标:
class b{ int *x; public: void foreach_x_do(void (*f)(int)){ while(*x++) // or any kind of iteration through x f(*x); } }; class a{ b b_inst; public: void f(int x) { } a(){ b_inst.foreach_x_do(f); // by mistake it was b_inst.foreach_x_do(f)(),however this wasn't the point at all. } ~a(){} }; int main(){}
但是,我收到此错误,编译时:
fp.cpp: In constructor
‘a::a()’
:
fp.cpp:17: error: no matching function for call to‘b::foreach_x_do(<unresolved overloaded function type>)’
fp.cpp:6: note: candidates are:void b::foreach_x_do(void (*)(int))
任何人都可以帮助它编译?