In C++, is there any reason to not access static member variables through a class instance? I know Java frowns on this and was wondering if it matters in C++. Example:
class Foo { static const int ZERO = 0; static const int ONE = 1; ... }; void bar(const Foo& inst) { // is this ok? int val1 = inst.ZERO; // or should I prefer: int val2 = Foo::ZERO ... }; I have a bonus second question. If I declare a static double, I have to define it somewhere and that definition has to repeat the type. Why does the type have to be repeated? For example:
In a header: class Foo { static const double d; }; In a source file: const double Foo::d = 42; Why do I have to repeat the "const double" part in my cpp file?