0

是否可以在 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)'

如何正确执行?

4

1 回答 1

1

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

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

于 2013-07-03T01:00:59.423 回答