1. 定义和声明全局对象
首先,在一个源文件中定义全局对象,并在一个头文件中声明它。
头文件 globals.h
源文件 globals.cpp
globals.h
#ifndef GLOBALS_H
#define GLOBALS_H
// 假设有一个类 ConfigLoad
class ConfigLoad {
public:
void setConfig(int value);
int getConfig() const;
private:
int configValue;
};
// 声明全局对象
extern ConfigLoad g_config_load;
#endif // GLOBALS_H
globals.cpp
#include "globals.h"
// 定义全局对象
ConfigLoad g_config_load;
2. 定义 ConfigLoad
类
头文件 globals.h
源文件 globals.cpp
// configload.h
#ifndef CONFIGLOAD_H
#define CONFIGLOAD_H
class ConfigLoad {
public:
void setConfig(int value);
int getConfig() const;
private:
int configValue;
};
#endif // CONFIGLOAD_H
// configload.cpp
#include "configload.h"
void ConfigLoad::setConfig(int value) {
configValue = value;
}
int ConfigLoad::getConfig() const {
return configValue;
}
3.在类中使用全局对象
类1 中的修改
在 Class1
中,你可以修改 g_config_load
对象的状态:
// class1.h
#ifndef CLASS1_H
#define CLASS1_H
#include "globals.h"
class Class1 {
public:
void updateConfig(int newValue);
};
#endif // CLASS1_H
// class1.cpp
#include "class1.h"
void Class1::updateConfig(int newValue) {
g_config_load.setConfig(newValue);
}
类2 中的读取
在 Class2
中,你可以读取 g_config_load
对象的状态:
// class2.h
#ifndef CLASS2_H
#define CLASS2_H
#include "globals.h"
class Class2 {
public:
void printConfig() const;
};
#endif // CLASS2_H
// class2.cpp
#include "class2.h"
#include <iostream>
void Class2::printConfig() const {
std::cout << "Current config value: " << g_config_load.getConfig() << std::endl;
}