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 还没有完成,但我不知道如何使它工作。基本上我想要做的是从 TextCard 提供一个字符串以在 PrintHand 中使用。能否请你帮忙?非常感激。

编辑:

此刻的结构‘卡’是这样的。

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

错误类似于“无法将某物转换为某物”。对不起,我不能更具体:/

4

3 回答 3

0

PrintHand期望对 的引用char,但您(即TextCard)提供指向 的指针char

于 2012-04-07T17:13:08.767 回答
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 数组。

于 2012-04-07T17:18:22.907 回答
0

您不能创建局部变量并从函数中返回它。改用mallocnew

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);
}
于 2012-04-07T17:34:39.400 回答