我正在尝试用C语言编写扑克游戏。
我不允许更改功能:

void eval_strength(struct hand *h){

 //mycode

}

void eval_players_best_hand(struct player *p){

    int i;
    p ->best_hand = p->hands[0];
      for(i=0; i <MAX_COMBINATIONS; i++){
         if(eval_strength(p->hands[i])) > p->best_hand){
           p->best_hand = p->hands[i];
       }
     }


有人可以帮我解决这些错误!

poker.c: In function ‘eval_players_best_hand’:

poker.c:181:15: error: incompatible types when assigning to type ‘struct hand *’ from type ‘struct hand’

  p->best_hand = p->hands[0];
           ^
poker.c:183:21: error: incompatible type for argument 1 of ‘eval_strength’

  if((eval_strength(p->hands[i])) > p->best_hand){


在函数void eval_players_best_hand(struct player * p)中,我试图为数组中的每只手评估手的强度。然后,我必须指出最好的一面。 eval_strength是另一个函数,它将根据其强度设置指针向量。

最佳答案

eval_strength()期望将用于构造指针的指针作为参数。您试图将其传递给实际结构,而不是指向它的指针。

因此,您的if语句应为:

if(eval_strength(&p->hands[i])) > p->best_hand){


看到不同?

关于c - 结构不兼容类型错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46525765/

10-11 21:13