teo*_*ron 1 c++ design-patterns idioms
正如我理解非静态方法的指针,它们对于为某种方法提供别名机制没有用处.例如,拥有一个具有三种方法的对象
class Provider
{
public:
int A(int in);
int B(int in);
int C(int in);
}
Run Code Online (Sandbox Code Playgroud)
和需要指向提供者方法指针的消费者(无论是A,B还是C).有一个控制器向所谓的消费者提供指向3种方法之一的指针,我们可以在使用Provider实例的消费者代码中编写一些东西,并指向A,B或C,这取决于控制器发送的内容.
如果这是C++中非静态方法的指针所能做到的,是否还有一种方法可以为对象的方法提供更"智能"的指针,而无需将对象与该方法指针一起发送给消费者?在肯定的情况下,所谓的成语/机制是什么(甚至一种模拟这种方式的资格作为我感兴趣的答案).
您的成员函数指针的概念通常是正确的.
成员函数指针实际上非常有用于与这些帮助程序的连接,as std::bind
或std::function
.原始成员函数指针通常很难看.
至于你的例子,
您的消费者可以接受std::function<return_type(args)>
,您可以将对象及其成员函数的绑定传递给此类使用者.
这样的结构std::bind
也允许实现部分专业化和currying等概念.