2012-04-07 15 views
1

私のコードに問題があります。 >これは、ランダムエラーを与え、私は..私はC++の初心者だなぜ私と一緒に負担してください分からない>ここシンプルなブラックジャックを書こうとしていますが、間違いがあります。わかりません

は問題のコードです:。

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

パラメータ 'の私が何をしても、PrintHandはコンパイルエラーを引き起こします。ここには両方の機能があります。

​​

PrintHandは私がやりたいことはPrintHandで使用するTextCardから文字列を供給され、基本的に..まだ行われていないが、私はそれを動作させる方法がわかりません。助けてもらえますか?とても有難い。

編集:

現時点では、 'card'の構造は次のようになります。

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

エラーは「何かに変換できません」という行に沿っています。申し訳ありませんが、私はより具体的なことができませんでした:/

+3

エラーに関する質問をしますあなたが受け取る、それはあなたが得る正確なエラーを含めることは通常役に立ちます。 – Bart

+0

私たちに構造を教えてください_card_ – skywall

答えて

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

PrintHandcharへの参照を期待していますが、(すなわち、TextCardcharへのポインタを提供します。

+0

あなたはそれを動作させる方法を教えてください。 :< – argoneus

+0

たとえば、PrintHandを 'struct card PrintHand(char * cardtext)'として宣言します。ただし、ポインタや参照が必要な場合は、必要に応じて使い分けてください。私は 'PrintHand'のコードからそれを見ることはできません。 – Matthias

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が返った後に消えるので、何もない shoudはその戻り値を使用します。 new関数内のchar配列のためのいくつかのストレージがそれを返し、呼び出し元のクリーンアップを持っているか、呼び出し側のchar配列を渡します。

関連する問題