2015-10-07 41 views
0

這裏是我的程序代碼快速片段(斷章取義的,但應該是罰款的問題)從指針過渡到對象?

Card::Card(int value, char suit) 
{ 
    value = value; 
    suit = suit; 
} 

Card cards[52]; 

Card c = new Card(RANKS[i],SUITS[j]); 
cards[size] = c; 

在這裏,我得到一個錯誤,因爲新卡(X,Y)返回一個指針卡,所以它應該是

Card* c = new Card(RANKS[i],SUITS[j]); 

如果我想結束只是一個卡對象,我該怎麼辦?我的印象是我可以使用地址運算符來做這件事,並且做一些類似 cards [size] =&c;

但是,編譯器似乎不喜歡這樣。誰能幫我?應該相當簡單,不幸的是我用C/C++有點生疏。

謝謝!

+0

'值=值;西裝=西裝;'我不知道這是否在你的真實代碼中,但如果是這樣的話,這意味着你沒有在這裏正確地設置你的類數據成員'價值'或'套裝'。你可能需要不同的名字,或者你應該寫'this-> value = value; this-> suit = suit;'或者你可以使用構造函數初始化列表:'Card :: Card(int value,char suit):value(value),suit(suit){}'。 (初始化程序列表的規則確保數據成員不會與參數混淆。) – bames53

回答

2

如果我只想要一個卡片對象,該怎麼辦?

使用:

int cardIndex = <some card index> 
cards[cardIndex] = Card(RANKS[i],SUITS[j]);; 
+0

哦,我很愚蠢。我不必做新的卡.....謝謝 – k9b

+1

@ k9b使用C++時忘記Java,儘量減少使用'new' – vsoftco