如何解决局部变量到全局变量
我是C ++的新手,如果我犯了一个非常愚蠢的错误,对不起。
我正在使用JsonCPP尝试读取我的配置文件,我想将它们存储在全局变量中,但是在函数结束时不清除它,我似乎无法解决该问题。
main.cpp:
#include "header.h"
int main()
{
bool b = InitJson();
if (!b) {
std::cout << "Config file missing or deformed.";
std::cin.get();
return 0;
}
std::cout << "Username: " << *bUsername << std::endl;
std::cin.get();
return 0;
}
json.cpp:
#include "header.h"
bool InitJson()
{
std::ifstream config_file("config.json");
Json::Value config;
config_file >> config;
if (!config["Username"] || !config["Password"])
return false;
bUsername = new std::string(config["Username"].asString());
bPassword = new std::string(config["Password"].asString());
if (!config["AutoMessage"] || !config["AutoMessage"]["enabled"]) {
bMessageEnabled = new bool(false);
}
else {
bMessageEnabled = new bool(config["AutoMessage"]["enabled"].asBool());
bMessageDelay = new int(config["AutoMessage"]["delay"].asInt());
}
std::cout << "Config file loaded sucessfully." << std::endl;
return true;
}
header.h:
#pragma once
#pragma warning(disable : 4996)
#include <iostream>
#include <json/json.h>
#include <fstream>
static std::string* bUsername;
static std::string* bPassword;
static bool* bMessageEnabled;
static int* bMessageDelay;
bool InitJson();
感谢您的帮助,如果我是个白痴,再次表示歉意。
解决方法
您可以将值保存在自己的类中,而不是将它们保存在静态变量中。访问该类的一种方法是使其成为单例。这将允许您像全局变量一样访问它。 您还可以将该对象分配给每个需要在其中保存设置的对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。