2012-04-07 28 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数组。