为什么静态成员方法不能在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每当你复制别人的文字/作品时,你应该使用引号格式来表示它不是你的文字/作品。或者,当这些词根本不适用于主题时,可能根本就不抄袭它们;哦,我错了。谢谢你的建议。