Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在不在主程序流中调用全局变量的情况下填充它?_C++ - Fatal编程技术网

C++ 如何在不在主程序流中调用全局变量的情况下填充它?

C++ 如何在不在主程序流中调用全局变量的情况下填充它?,c++,C++,我希望不必首先显式初始化就可以访问库的这一部分,我尝试了以下内容: #pragma once #include <Windows.h> struct SysInfoClass { DWORD granB; SysInfoClass() { SYSTEM_INFO siSysInfo; GetSystemInfo(&siSysInfo); granB = siSysInfo.dwAllocationGranula

我希望不必首先显式初始化就可以访问库的这一部分,我尝试了以下内容:

#pragma once
#include <Windows.h>

struct SysInfoClass {
    DWORD granB;
    SysInfoClass() {
        SYSTEM_INFO siSysInfo;
        GetSystemInfo(&siSysInfo);
        granB = siSysInfo.dwAllocationGranularity;
    }
};

SysInfoClass SysInfo();
#pragma一次
#包括
结构系统信息类{
德沃德·格兰布;
SysInfoClass(){
系统信息siSysInfo;
GetSystemInfo&siSysInfo;
granB=siSysInfo.dwAllocationGranularity;
}
};
SysInfoClass SysInfo();

好的,看起来不错。我希望这能在程序主函数执行之前创建SysInfoClass的实例,这样我就可以在任何地方运行auto x=SysInfo.granB,但它不起作用。我可以将SysInfo分配给对象,但无法访问其任何成员,这是为什么?

您有语法错误。
而不是

SysInfoClass SysInfo();
你需要写作

SysInfoClass SysInfo;

按照您编写它的方式,编译器认为它是一个函数声明。

在一个独立函数中,将全局变量转换为一个
静态
局部变量,该函数返回对该变量的引用

SysInfoClass& SysInfo()
{
    static SysInfoClass sys_info;
    return sys_info;
}

“无法访问”是什么意思?你有编译器错误吗?发生了什么错误?
SysInfoClass SysInfo()
是一个函数,而不是一个变量-可能这就是造成问题的原因-否则我不确定您在做什么,所以不确定出了什么问题。。。删除括号…否决-告诉某人做一些与他想做的完全不同的事情。@shoosh:嗯,我承认我不明白OP的问题是什么。不过,答案解决了问题并改进了代码。