Is there a better way to:
- avoid code/data duplication
- hide these functions from the outside world
- ideally keep it all in one header
--Jonathan
Looks like a candidate for a base class (or class template).
> So I've been pulling the code out into a
> dummy namespace, or a dummy class that the template inherits from
> because I don't want the code duplicated.
Not sure why you designate them "dummy", but OK.
> But *then* I figure this
> stuff doesn't belong in a header so I move that stuff to a .cpp file,
> which destroys one of the things I like about templates: everything
> in one header.
Uh... You *figure* "this stuff doesn't belong in a header" - how do you
figure that? If you like everything in one header, then keep it there, no?
> Is there a better way to:
> - avoid code/data duplication
> - hide these functions from the outside world
> - ideally keep it all in one header
Uh... The last two requirements are conflicting, don't you think?
V
--
I do not respond to top-posted replies, please don't ask
If they were trivial functions I would inline them and throw
them in the header. But when they're not... it just seems
contrary to practice to do that. I guess it's a case of having
your cake and eating it, too.
> > Is there a better way to:
> > - avoid code/data duplication
> > - hide these functions from the outside world
> > - ideally keep it all in one header
>
> Uh... The last two requirements are conflicting, don't you think?
It sounds like it. But a common base class with protected
members basically satisfies both. I guess that's about the
cleanest approach.
Just the "inline"-ing bothers me.
--Jonathan
You could always make the static member private in the base class and
then declare the derived classes as friends.