Template classes with static members

J

Jonathan Lee

Hi all,
I have a couple situations where I've written a template class that
has static data or static functions that are the exact same no matter
what the template type is. 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. 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.

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
 
V

Victor Bazarov

Hi all,
I have a couple situations where I've written a template class that
has static data or static functions that are the exact same no matter
what the template type is.

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
 
J

Jonathan Lee

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?

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.
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
 
J

Juha Nieminen

Jonathan Lee said:
Is there a better way to:
- avoid code/data duplication
- hide these functions from the outside world
- ideally keep it all in one header

You could always make the static member private in the base class and
then declare the derived classes as friends.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,764
Messages
2,569,567
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top