Suppose I want to define a class Foo
which has a member variable that is also a template Bar<int num> baz
. Also suppose that I always want num
to be some particular value (say 5) for baz
as defined in Foo
. Then presumably I could accomplish this as follows:
class Foo
{
private:
Bar<5> baz;
};
However, this would be introducing a magic number which is typically not good programming practice. I have considered defining a constant in the class definition a la const int num = 5;
, but that would create an extra integer for every instance of Foo
, which is not ideal if I have lots of instances. I have also considered defining a constant variable outside the class definition but in the header file. This has the advantage of being seen in the .cpp
file, but pollutes the global name space.
My question is, what is the most stylistically appropriate way to accomplish this goal? Ideally there would be some variable which is only visible to the header and .cpp
file, and which can be used in the template call.