繁体   English   中英

C ++函数指针,指向静态指针对象的成员函数

[英]C++ Function pointer to member function of a static pointer object

我有一个类(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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM