C:迭代所有对象的成员?
发布时间:2020-12-16 04:56:32 所属栏目:百科 来源:网络整理
导读:假设我有一个包含许多成员的对象: class Example { AnotherClass member1; AnotherClass member2; YetAnotherClass member3; ...}; 是否有简短/简洁的方式来做类似的事情: foreach(member m: myExample) m.sharedMethod(); 而不是单独访问每一个? 我想我
假设我有一个包含许多成员的对象:
class Example { AnotherClass member1; AnotherClass member2; YetAnotherClass member3; ... }; 是否有简短/简洁的方式来做类似的事情: foreach(member m: myExample) m.sharedMethod(); 而不是单独访问每一个? 我想我可以将它们放在一个向量中并使用shared_ptr获得相同的效果,我只是想知道是否说,Boost或其他一些流行的库没有自动执行此操作. 解决方法
C不支持类内省,所以你不能迭代这样的类中的所有成员 – 不管没有(手动编写)函数,无论如何迭代所有成员.
原则上,您可以像这样添加模板成员: template<typename Functor> void doAllMembers(Functor &f) { f(member1); f(member2); f(member3); } 那就是说,我认为这是一个破碎的设计;你已经离开并公开了所有内部成员.如果您稍后添加一个会怎么样?或者改变一个语义?使一个缓存的值有时会过时?等等,如果您的成员并非都从相同类型继承,会发生什么? 退后一步,重新考虑你的设计. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |