"this"参数显式传递给方法调用

Explicit passing "this" parameter to method call

本文关键字:方法 调用 this 参数      更新时间:2023-10-16

在c++中,是否可以显式地首先向类方法传递"this"参数?

类似这样的东西:

struct A
{
    void some() {} 
};
....
A a;
A::some(&a); // ~ a.some();

对于合理的问题"为什么?":我需要实现std::bind类似物,它可以很好地与以下结构配合使用:

void f(int);
bind(f, 3);

但这不起作用:

bind(&A::some, &a);

更新:伙计们,我的问题显然不是很清楚。我知道如何使用std::bind,我想知道它是如何处理这个参数显式传递给它的构造的:std::绑定(&A::some,&A);

以下是一个可以在bind:中使用的调度器的想法

template <class R, class... Arg>
R call(R (*f)(Arg...), Arg &&... arg)
{ return f(std::forward<Arg>(arg)...); }
template <class C, class R, class... Arg>
R call(R (C::*f)(Arg...), C &c, Arg &&... arg)
{ return (c.*f)(std::forward<Arg>(arg)...); }

您想要以下内容吗?

struct A
{
    void some();
    static void some(A* that) { that->some(); } 
};
..
A a;
A::some(&a);