Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么静态成员方法不能在C++中访问非静态方法?_C++ - Fatal编程技术网

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

为什么静态成员方法不能在C++中访问非静态方法?,c++,C++,我必须在工作时为一个新模块创建一个回调接口,所以我在一个类中创建了一个静态方法 有一件事我仍然不明白,为什么我不能在静态成员中调用非静态成员方法,如下所示: class CAdapterUser { public: CAdapterUser() {} virtual ~CAdapterUser() {} void Test(); void Test2(); protected: CAdapter m_

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

有一件事我仍然不明白,为什么我不能在静态成员中调用非静态成员方法,如下所示:

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?
}

有人能回答我的问题吗?

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

您是否确实为Test2添加了函数定义?链接错误表明您没有。因为如果可以,它将是一个非静态成员函数?@tntxtnt OP正在使用pUser->Test2;不是这个->测试2;。应该没问题。@tntxtnt-显然他们还没有定义Test2。但是静态数据成员与此有什么关系?@tntxtnt每当你复制别人的文字/作品时,你应该使用引号格式来表示它不是你的文字/作品。或者,当这些词根本不适用于主题时,可能根本就不抄袭它们;哦,我错了。谢谢你的建议。