00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00026
00027
00028 #ifndef __CARDFACTORY_H__
00029 #define __CARDFACTORY_H__
00030
00031 #include <iostream>
00032 #include "Exception.h"
00033 #include "Card.h"
00034 #include "NumberCard.h"
00035 #include "LetterCard.h"
00036
00037 namespace deck {
00038
00041 template <typename cardType>
00042 class CardFactory {
00043 public:
00044 CardFactory() {};
00046
00047 virtual ~CardFactory() {};
00049
00050 virtual Card *createCard(int rank, enum Card::SuitType suit) {
00051 Card *pCard = NULL;
00052 try {
00053 pCard = new cardType(rank, suit);
00054 }
00055 catch (error::Exception &e) {
00056 std::cout << e << std::endl;
00057 }
00058 return pCard;
00059 }
00061
00062 private:
00063
00064 };
00065 }
00066
00067 #endif