为什么静态成员方法不能在C ++中访问其非静态方法?

时间:2019-03-13 13:13:04

标签: c++

我在工作时必须为新模块创建一个回调接口,所以我在类中创建了一个静态方法。

我仍然不明白的一件事是为什么我不能在像这样的静态成员中调用非静态成员方法:

class CAdapterUser
{
public:
    CAdapterUser()          {}
    virtual ~CAdapterUser() {}

    void        Test();
    void        Test2();

protected:
    CAdapter    m_Adapter;

    unsigned char buffer[16];

    static void TestFunc(void* apContext);
};

void 
CAdapterUser::TestFunc( void* apContext )
{
//  CAdapterUser* pUser = (CAdapterUser*)apContext;
    CAdapterUser* pUser = reinterpret_cast<CAdapterUser*>(apContext);

    pUser->Test2();         // Compile error : LNK2019
    pUser->buffer[0] = 1;   // Even though I can access protected member variable?
}

有人可以回答我的问题吗?

1 个答案:

答案 0 :(得分:1)

LNK2019是无法解析的符号,可能您只是忘记了实现Test2()