使用外部函数作为成员函数指针

时间:2013-07-03 00:29:10

标签: c++ visual-c++ member-function-pointers

在C ++中是否可以创建一个未在类A中定义但可以像方法指针一样对待的函数?例如:

typedef bool (A::*MethodType)(int a);

MethodType g_someMethod = &A::SomeMethod;

现在,我想创建一个类型为AnotherMethod的新函数MethodType。我试图做以下事情:

bool A_AnotherMethod(A* _this, int a) {
    std::cout << __FUNCTION__ << "\n";
    return true;
}

MethodType g_someMethod = A_AnotherMethod;

// ...

(this->*g_someMethod )(42);

但是我得到了

error C2440: '=' : cannot convert from 'bool (__cdecl *)(A *,int)' to 'bool (__cdecl A::* )(int)'

如何正确地做到这一点?

1 个答案:

答案 0 :(得分:1)

不,你不能。 C ++没有类似于C#中的扩展方法的功能。

P.S。方法指针在C ++中具有笨拙的语法,很少使用。但这就是用语言定义它们的方式。