传递成员函数作为参数/ c
发布时间:2020-12-16 07:25:29 所属栏目:百科 来源:网络整理
导读:我想在c中实现一个类b,它可以通过封装迭代器类型的成员集进行某种迭代.喜欢: b_object.for_each_x_do(function_f); 所以function_f将获得x成员的每个人并做任何事情.让我们说: void function_f(x_member_type x){ cout x endl; } 好.所以我试图通过以下代
我想在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(){} 但是,我收到此错误,编译时:
任何人都可以帮助它编译? 解决方法
它应该只是:
b_inst.foreach_x_do(f); 您还需要使用f static,而不是非静态成员方法,因为foreach_x_do函数的原始签名是针对独立函数指针,而不是指向成员函数的指针.那么,即 static void f(int x) { } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ruby-on-rails – 如何在activeadmin中声明一个嵌套资源?
- Swift定义c中定义的struct的双指针
- ruby-on-rails – 通过关系在has_many中找到唯一记录的更好
- 用PagedDataSource实现分页
- 静默安装Oracle 11g r2
- 无法从node_modules typescript导入react-tap-event-plugin
- swift – 迭代除了数组的最后一个索引之外的所有索引
- iphone – UIAlertview代码上的EXC_BAD_ACCESS = 1
- flvplayer.swf flv视频播放器使用方法 (转载)
- VB.NET 自动打包程序