我對C++編程相對來說比較陌生,但是我是一個10年的C程序員,所以對於指向對象的指針比我對對象的引用更舒適。指針的向量在這裏是不必要的還是更糟的,會導致內存泄漏?
我正在寫紙牌遊戲 - 這種設計是否不安全?有沒有更好的辦法?
無論如何,我有一個類SolitaireGame
:
class SolitaireGame:
{
public:
SolitaireGame(int numsuits = 1);
private:
Deck * _deck;
vector<Card> _shoe;
};
的Deck
被這樣定義:
class Deck:
{
public:
Deck::Deck(vector<Card>& shoe);
~Deck();
int DealsLeft() const { return deals_left; }
Card * PullCard();
private:
int deals_left;
int num_each_deal;
deque<Card *> _cards;
};
的Deck
構造,帶給Card
對象的矢量(在鞋的引用,通常104卡)並將指向每個卡的指針推到它自己的指針指針上。
Deck::Deck(vector<Card>& shoe)
{
vector<Card>::iterator iter = shoe.begin();
while(iter != shoe.end())
{
_cards.push_front(&(*iter));
iter++;
}
}
}
的鞋在SolitaireGame
構造函數創建。一旦創建了這個動態創建的對象Card
對象 - 然後我將這個向量的引用傳遞給構造函數。
SolitaireGame::SolitaireGame(int numsuits):_numsuits(numsuits)
{
Card * c;
vector<Card> _shoe;
for(int i = 0; i < NUM_CARDS_IN_SHOE; i++)
{
c = new Card();
_shoe.push_back(*c);
}
_deck = new Deck(_shoe);
}
我的想法是,該鞋將是爲Card
對象的實際內存和Deck
和Columns
只是處理指向那些Card
對象的容器。
謝謝大家誰指出我的'vector _shoe'變量在SolitaireGame構造函數中,會隱藏'_shoe'成員變量。這實際上是一個錯字,發佈問題時(代碼不包含此變量)。我想我不會編輯它,所以每個人的答案都是有意義的。 –
BeeBand
2009-10-02 10:52:21