1

私のコードに問題があります。ランダムなエラーが発生しますが、その理由はわかりません..私は C++ の初心者なので、ご容赦ください >.>

問題のあるコードは次のとおりです。

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

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

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;
}


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

PrintHand はまだ完成していませんが、それを機能させる方法がわかりません。基本的に、私がやりたいことは、PrintHand で使用される TextCard から文字列をフィードすることです。助けていただけますか?とても有難い。

編集:

現時点での構造「カード」はこんな感じ。

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

そして、エラーは「何かを何かに変換できません」という行に沿っています。申し訳ありませんが、これ以上具体的に言えませんでした:/

4

3 に答える 3

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 が戻った後に消えるので、その戻り値を使用するべきではありません。関数内の char 配列の一部のストレージがそれを返し、呼び出し元をクリーンアップさせるかnew、呼び出し元から char 配列を渡します。

于 2012-04-07T17:18:22.907 に答える
0

PrintHandへの参照を期待しますがchar、あなた (つまり、TextCard) へのポインタを提供しますchar

于 2012-04-07T17:13:08.767 に答える