我的代码有问题。它会产生随机错误,我不知道为什么。.我是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;
};


错误是“无法将某物转换为某物”。抱歉,我不能更具体了:/

最佳答案

您不能创建局部变量并从函数返回它。请改用malloc或new。

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

关于c++ - 试图写一个简单的二十一点,但是有我不明白的错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10056435/

10-11 23:00