這是我的addCard函數,它將一張紙牌作爲參數,然後將其自身的地址移交給分配給撲克對象的指針數組。析構函數問題
void cardHand::addCard(playingCard card) {
theHand[nElems++] = &card;
} // addCard()
現在,當我運行我的程序時,它運行良好,但當析構函數被調用時崩潰。
cardHand::~cardHand() {
for(int c = 0;c<MAX;c++) {
if(theHand[c] != NULL)
delete theHand[c]; // here is the problem
}
delete [] theHand;
} // class destructor
它崩潰了,因爲我只是在addCard函數中移交了撲克對象的地址。它應該是一個指針嗎?
查看下面有關使用局部變量去使用new&()用法的人們的回答......說了這麼一句話,請確定您是否有相應的cardHand :: removeCard()方法,您將theHand [xyz ]刪除(刪除())到0時,否則您將嘗試刪除已刪除的對象。如果非null真的意味着它仍然是一個有效的對象,那麼在析構函數中的檢查是有價值的。另外,我會將NULL更改爲0 ... – Dan 2009-07-04 14:33:13