- 为什么我们会想写一个class,将这些数据封装在其中呢?因为藉由这样的封装,我们便可以封装这些数据,避免外界直接存取它们;只开放一小组函数作为对外接口。更进一步,我们还可以因此将这些对象的名称隐藏于类范围之内,不和其它全局变量实体发生名称上的冲突。由于我们希望每个全局变量都仅有一份,所以将它们声明为static members,并且也将它们的存取函数声明为static。
#include <string>
using std::string;
class globalWrapper
{
public:
static int test_passed() {return _tests_passed;}
static int tests_run() {return _tests_run;}
static int version_number() {return _version_number;}
static string version_stamp() {return _version_stamp;}
static string program_name() {return _program_name;}
static void tests_passed(int nval) {_tests_passed = nval;}
static void tests_run(int nval) {_tests_run = nval;}
static void version_number(int nval)
{_version_number = nval;}
static void version_stamp(const string& nstamp)
{_version_stamp = nstamp;}
static void program_name(const string& npn)
{_program_name = npn;}
private:
static string _program_name;
static string _version_stamp;
static int _version_number;
static int _tests_run;
static int _tests_passed;
};
string globalWrapper::_program_name;
string globalWrapper::_version_stamp;
int globalWrapper::_version_number;
int globalWrapper::_tests_run;
int globalWrapper::_tests_passed;
2020/04/03