在c ++调用类方法中是否可以显式传递第一个“this”参数?
这样的事情:
struct A
{
void some() {}
};
....
A a;
A::some(&a); // ~ a.some();
对于合理的问题“为什么?”:我需要实现std :: bind analogue,它适用于这样的结构:
void f(int);
bind(f, 3);
但这不起作用:
bind(&A::some, &a);
更新 伙计们,我的问题显然不是很清楚。我知道如何使用std :: bind,我想知道如何处理这个param显式传递给它的构造:std :: bind(& A :: some,& a);
答案 0 :(得分:5)
以下是您可以在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)...); }
答案 1 :(得分:0)
您想要以下内容吗?
struct A
{
void some();
static void some(A* that) { that->some(); }
};
..
A a;
A::some(&a);