![]() |
1
1
如果你的团队由相当聪明的人组成,我会说要相信他们和他们的能力,并使用指向成员语法提供的技术上首选的解决方案。这就是它的用途。 如果你真的很担心,你可以采取一些措施来缓解未来的麻烦。
其他两种方法都存在问题,正如您所描述的,甚至更严重:
从 here . |
![]() |
2
3
在这种情况下,我发现模板化的函数非常清晰。
|
![]() |
3
2
更简单的方法是使用一个通用函数,它通过指向成员的指针使访问看起来像一个函数调用。它可能看起来像这样:
该示例还包括一个帮助函数,用于帮助推导该函数的模板参数(本示例中未使用)。 函数readingattime还可以接受模板化函数:
这样,您就可以使用各种函数/函数从数据[IDX-1]中获取值,而不仅仅是指向成员的指针。 成员指针的更通用的等价物可能是std::tr1::bind或std::tr1::mem_fn。 |
![]() |
4
1
对于简单的事情,我更喜欢指向成员解决方案的指针。但是,函数方法有两个可能的优点:
但是,我认为只有当你所做的函数非常复杂和/或在许多不同的地方使用时,函数方法才是值得的。 |
![]() |
Paul Spencer · 部分应用函数类型的函子 7 年前 |
![]() |
cha · 将函数对象传递给std::function 7 年前 |
![]() |
softshipper · fmap的参数太多 8 年前 |
![]() |
Gaurav Sehgal · 函数指针与C中的函子++ 9 年前 |
![]() |
nburk · 如何在C++中使用带有自定义排序成员函数的sort()? 10 年前 |
![]() |
Sam · std::bind创建的函子在哪里? 10 年前 |