2012-04-07 52 views
1

我有我的代碼問題。它給隨機錯誤,我不知道爲什麼。我是一個新手,C++,所以請多多包涵>>試圖寫一個簡單的21點,但有錯誤,我不明白

這是這是有問題的代碼:

while (!IsGameOver) { 
    struct decktype deck = DeckInit(); 
    struct card card = PickACard(deck); 
    PrintHand(TextCard(card)); 
} 

的'參數無論我做什麼,PrintHand都會導致編譯錯誤。這是兩個功能。

​​

PrintHand還沒有完成,但我不知道如何使它工作..基本上我想要做的是飼料從TextCard串什麼的PrintHand使用。能否請你幫忙?非常感激。

編輯:

目前的結構'卡'看起來像這樣。

struct card { 
    int color; 
    int number; 
    int value; 
    char *hand; 
    int totalvalue; 
}; 

而且錯誤是沿着「無法將某物轉化爲某種東西」的。抱歉,我不能更具體:/

+3

當問一個關於錯誤的問題您收到,通常包含您得到的確切錯誤很有幫助。 – Bart 2012-04-07 16:57:59

+0

向我們展示結構_card_ – skywall 2012-04-07 17:02:34

回答

0

您不能創建局部變量並從函數返回。代替使用malloc新的

char str[22]; 

char * str = (char *) malloc(22* sizeof(char)); OR 
String str = "sometext" + "othertext"; 

我不知道,你正在嘗試做此:

struct card PrintHand(char &cardtext) { 
    struct card card; 
    return card; 
} 

如果你只想打印文本,這樣做:

void PrintHand(char * cardtext) { // * instead of & 
    printf("%s", cardtext); 
} 
0

PrintHand期望char的引用,但您(即TextCard),以char提供一個指針。

+0

您能解釋一下如何使它工作嗎? :< – argoneus 2012-04-07 17:17:01

+0

例如,將PrintHand聲明爲'struct card PrintHand(char * cardtext)'。然而,如果你需要一個指針或引用,它就取決於你想要的。我無法從'PrintHand'的代碼中看到它。 – Matthias 2012-04-07 17:21:52

0

有幾個錯誤。

struct card PrintHand(char &cardtext) { 
    struct card card; 
    return card; 
} 

不使用cardtext,但真正的錯誤是從TextCard傳遞給它的值是char *,所以這應該是struct card PrintHand(char *cardtext)

然後:

char *TextCard(struct card &card) { 
    char str[22]; 
    sprintf(str,"%s of %s (%d)",card_num[card.number],card_type[card.color],card.value); 
    return str; 
} 

這將返回,str,即堆棧中str [0]的地址,以及TextCard返回後的消除器,因此沒有任何應該使用該返回值。 new可以爲函數中的char數組返回一些存儲,並且可以調用清理,或者傳入調用者的char數組。