c++ - 为什么静态成员方法不能在 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?
}
有人可以回答我的问题吗?
解决方案
LNK2019 是未解析的符号,可能您只是忘记实现Test2()
.
推荐阅读
- c++ - 如何从基指针区分两个派生类,而不重复尝试 dynamic_cast<> 或枚举字段
- node.js - 想要访问 JSON 正文中的 wins 数据,找不到正确的结果路径?
- pivot - 使用逻辑回归给出反向结果的评分模型
- database - 如何将 VS Code 连接到数据库服务器?
- scala - 在 if 语句中返回 Scala 中的值的问题
- python - 如何在python中从左到右替换文本文件中的字符?
- javascript - Sequelize 基于值的唯一约束组合
- vba - 什么是 VBA 代码概述的编译错误
- angular - 没有引导 cdn 链接,ngb-rating 不起作用
- c# - 如何使剃须刀页面仅在开发中可用?