C ++函数指向静态指针对象的成员函数的指针
我有一个类(B),它有一个指向另一个类(A)的对象的静态成员指针。 在第一个类(B)的一个成员函数中,我需要一个指向第二个类(A)的成员函数的函数指针。
class A
{
public:
int DoubleValue(int nValue)
{
return nValue * 2;
}
};
class B
{
private:
static A* s_pcA;
public:
void Something()
{
// Here a need the function pointer to s_pcA->DoubleValue()
}
};
我试过这个:
int (*fpDoubleValue) (int nValue) = s_pcA->DoubleValue;
但Xcode说:“必须调用对非静态成员函数的引用”。
你不能获得指向类实例的成员函数的指针。 相反,您需要创建一个包含指向类实例和成员函数的指针的函数对象。 你可以使用std::bind
来达到这个目的:
auto fpDoubleValue = std::bind (&A::DoubleValue, s_pcA , std::placeholders::_1);
Lambda函数也可以使用:
auto fpDoubleValue = [](int nValue) { return s_pcA->DoubleValue(nValue); };
您可以在方法上使用指针:
int (A::*fpDoubleValue) (int nValue) = &A::DoubleValue;
或者在你的情况下使该方法是静态的,因为它不依赖this
:
class A
{
public:
static int DoubleValue(int nValue) { return nValue * 2; }
};
然后
int (*fpDoubleValue) (int nValue) = &A::DoubleValue;
链接地址: http://www.djcxy.com/p/96357.html
上一篇: C++ Function pointer to member function of a static pointer object