View Single Post
Old May 30th, 2006, 1:21 AM   #1
uman
Expert Programmer
 
Join Date: Dec 2004
Posts: 794
Rep Power: 4 uman is on a distinguished road
Which is preferable?

I'm writing a program that uses playing cards. In my card class, I'm not hardcoding the fact that there are four suits and thirteen numbers in each, because I want it to be flexible to allow me to in the future create decks of non-standard cards, e.g. tarot cards.

So I have this:
//suits: number of suits
//numbers: number of members of each suit
template<unsigned suits, unsigned numbers> class Card
{
     /* ... */
}
So far so good. But now I have another class called Deck, which is basically a glorified container for Card. I have two thoughts on how to do this. Either
template<class card_type> class Deck
{
     std::deque<card_type> card_container;
     /* ... */
}
or
template<unsigned suits, unsigned numbers> class Deck
{
     std::deque<Card<suits,numbers>> card_container;
     /* ... */
}
Is there a standard as to which of these is better? If not, are there any advantages or disadvantages to either approach? If not, then it is just a matter of style; which do you prefer?

Note: There may be syntax errors in this post as I'm just getting back into programming after a long absense. I hope, however, that you can understand my point. If you find any errors, please correct me.
__________________
Few people deserve to be compared to (Rush) Limbaugh, most of them were convicted at the Nuremburg trials.
--WilliamSChips on Slashdot
uman is offline   Reply With Quote