首页 > 解决方案 > 为什么静态成员方法不能在 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?
}

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

标签: c++

解决方案


LNK2019 是未解析的符号,可能您只是忘记实现Test2().


推荐阅读