我已经学习C++几个月了,最近在我的IDE(Jetbrains CLion FTW!)中遇到了一个奇怪的问题。
我的IDE可以为成员生成getter,自动确定类型、是否为const以及其他关键字。显然,生成并不完美,所以我通常不使用这个功能。目前我正在专注于Windows API,需要处理句柄。所以当我为句柄(HINSTANCE、HWND、HDC等)生成getter时,会发生一些非常奇怪的事情。
假设我有一个如下定义的成员:
我的IDE可以为成员生成getter,自动确定类型、是否为const以及其他关键字。显然,生成并不完美,所以我通常不使用这个功能。目前我正在专注于Windows API,需要处理句柄。所以当我为句柄(HINSTANCE、HWND、HDC等)生成getter时,会发生一些非常奇怪的事情。
假设我有一个如下定义的成员:
HDC m_hDeviceContext;
那么当我的IDE生成一个getter时,它看起来像这样:
const HDC__* getDeviceContext() const...
我很困惑为什么类型是HDC__。它被声明为指针,因此在winnt.h中,句柄被声明为指针(typedef struct name##__ *name)。
有人能给我解释一下为什么会出现这种情况吗?这是我的IDE的bug吗?因为每当我看到返回句柄的getter的示例时,它们通常只返回直接的句柄类型。