I l@ve RuBoard |
![]() ![]() |
Exercise 4.3Consider the following global data: string program_name; string version_stamp; int version_number; int tests_run; int tests_passed; Write a class to wrap around this data. Why might we wish to do this? By wrapping these global objects within a class, we encapsulate their direct access within a small set of functions. Moreover, the names of the objects are now hidden behind the scope of the class and cannot clash with other global entities. Because we wish only a single instance of each global object, we declare each one to be a static class member as well as the member functions that access them. #include <string> using std::string; class globalWrapper { public: static int tests_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; ![]() |
I l@ve RuBoard |
![]() ![]() |