我喜欢这个可以访问的库,而不必先显式地初始化它,这就是我尝试的内容:
#pragma once
#include <Windows.h>
struct SysInfoClass {
DWORD granB;
SysInfoClass() {
SYSTEM_INFO siSysInfo;
GetSystemInfo(&siSysInfo);
granB = siSysInfo.dwAllocationGranularity;
}
};
SysInfoClass SysInfo();
好的,这似乎很好。我希望这可以在程序main函数执行之前创建SysInfoClass的实例,这样我就可以在任何地方使用auto x = SysInfo.granB,但它不起作用。我可以为事物分配SysInfo,但我无法访问其任何成员,为什么会这样?
答案 0 :(得分:3)
您遇到语法错误 而不是
SysInfoClass SysInfo();
你需要写
SysInfoClass SysInfo;
编写它的方式,编译器认为它是一个函数声明。
答案 1 :(得分:-1)
将全局变量转换为独立函数中的static
局部变量,该函数返回对变量的引用。
SysInfoClass& SysInfo()
{
static SysInfoClass sys_info;
return sys_info;
}