Re: global variables - an alternate approach
On 13.02.2010 04:40, forums_mp@hotmail.com wrote:
For starters the emphasis is on 'global' variables common to muliple
translation units
Coding standard states that global variables should be defined as
static variables' within a class at public scope. One instance of
this class should exist and the recommendation is to use the singleton
design patten. IOW:
You did *not* define global variables, but global constants. Depending
on the type, constness and usage of the global objects, different
approaches might make sense.
(....)
static int const a = 5 ;
static const double pi ;
static
common_data_b& intance() {
static common_data_b cd_b;
return cd_b;
}
(....)
OK!! But what's the difference if I did:
(....)
class common_data_a {
public :
static int const a = 5;
static const double pi ;
};
(....)
I'm not seeing the value added surrounding the singleton design
pattern. In my view the common_data_a (alternate) approach suffices.
Am I wrong?
In you case I would do:
namespace my_consts {
static int const a = 5;
static double const pi = 3.141;
}
The singleton approach makes sense when your global object (be it a
const or a variable) should only be constructed if used:
class MyConsts {
const LargeInteger a;
const RealNumber pi;
MyConsts()
: a("5000100200300400500600700800900")
, pi("3.14159265358979323846264338327950288")
{ }
public:
MyConsts const& instance() {
// Threading issues aside, this will only call the ctor of MyConsts
// the first time instance() is called:
static MyConsts obj;
return obj;
}
};
br,
Martin
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]