【C++】#include头文件和class+ 类名的区别

class   类名只是声明存在这么一个类,但是通过这个声明无法得到任何关于此类的具体信息。这样你可以在其他使用到的地方声明一个该类型的指针。 
include头文件则是将整个该头文件与使用到的地方关联起来。 

使用class   类名一般是为了去除编译依赖,减少编译消耗的时

#include "xx.h" 在编译的时候把xx.h文件直接展开,所以里面的接口都能用,可以申明对象。但是class xx;这种方式就不会,你只能使用它的指针或者引用,你不能创建申明对象。

 

参考:https://www.cnblogs.com/lidabo/archive/2012/12/09/2810567.html

C++,你可以使用Windows API的SetupDiGetDeviceRegistryProperty函数来从设备注册表获取设备信息,包括其设备类名。通常这种操作应用于设备管理器相关的功能,比如遍历硬件设备并检查某个特定设备的类别。 下面是一个基本的步骤来获取类名并检查是否等于"Monitor": 1. 首先,你需要包含必要的头文件: ```cpp #include <windows.h> #include <setupapi.h> #include <devguid.h> #include <wrl/client.h> using namespace Microsoft::WRL; ``` 2. 定义常量,如设备实例ID(假设为`GUID_DEVCLASS_MONITOR`)和所需的属性类型(例如`DI.getPropertyType(SPDIDEVICEDESC)`获取设备描述符)。 3. 使用`CoCreateInstance`创建设备接口库实例(`IWmiServices* pWmiServices`): ```cpp ComPtr<IWmiServices> pWmiServices; hr = CoCreateInstance(__uuidof(CoWmiServices), nullptr, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pWmiServices)); if (FAILED(hr)) { // 处理错误 } ``` 4. 使用`SetupDiGetDeviceInstanceId`获取设备实例ID(`TCHAR szDeviceInstanceId[MAX_PATH]`),然后构造设备路径: ```cpp std::vector<TCHAR> devicePath(MAX_PATH); hr = SetupDiGetDeviceInstanceId(NULL, szDeviceInstanceId, NULL, MAX_PATH, NULL); if (FAILED(hr)) { // 处理错误 } // 构造设备注册表路径 std::wstring registryPath(L"\\{"); registryPath.append(szDeviceInstanceId); registryPath.append(L"}"); ``` 5. 然后,你可以调用`SetupDiGetDeviceRegistryProperty`来获取设备类名: ```cpp std::wstring className; HKEY hKey; if (SetupDiGetDeviceRegistryProperty(hHive, &deviceKey, SPDRP_CLASS, nullptr, (PBYTE)className.data(), sizeof(className), NULL) == ERROR_SUCCESS) { std::wstring normalizedClassName = GetCanonicalName(className); // 这里需要自定义函数将全限定类名转换为简短形式,比如"Monitor" if (normalizedClassName.compare("Monitor") == 0) { // 类名等于 "Monitor" } else { // 类名不等于 "Monitor" } } else { // 处理错误 } ``` 请注意,实际项目,可能还需要处理异常和错误,以及对类名的规范化处理(比如将全限定名称转换为简短形式)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值