I have a class that has 5 static public functions and 1 static private function (called from one of the public functions). The class doesn’t have any member variables. It seems to me that it should be a namespace and not a class. But what to do with the private function? I prefer it not to be accessible by every namespace user, but there is no access control in namespaces.
Share
There are two ways i know of
Don’t declare them in the header
One way is to not declare those functions inside the header. They can be placed into unnamed namespaces within the implementation file, only.
Indeed, you will then have to implement any function that accesses this private function in the implementation file (not inline in the header).
Put them into a detail namespace
Preferably, you put them in a different header, and include them. So the code of them won’t disturb your interface header. This is how
boostdoes it, too: