2014-03-05 81 views
0

我有功能錯誤t 1錯誤C2664:'arl :: contFolder * arl :: list :: setDown(arl :: contFolder *,int *)':無法將參數2從'unsigned int'轉換爲'int *'

void file::pg_down(fldr *f) 
    { 
     drawItem(*f, drw::Colours::blueVivid); 
     f->item_pos = myList.setDown(f->active->next, f->cord.x); 
     if (!strcmp(f->item_pos->name, myStr)) 
      f->item_pos = f->item_pos->prev; 

     drawItem(*f, drw::Colours::greenVivid); 
    } 

調用該函數

contFolder* list::setDown(contFolder* current, int *xCord) 
    { 
     arl::contFolder* tmp = NULL; 
     arl::contFolder* i = NULL; 
     for (i = current; i->next; i = i->next, xCord++) 
     { 
      if (!strcmp(i->name, myStr)) 
      { 
       tmp = i; 
       return tmp; 
      } 
     } 
     tmp = i; 
     return tmp; 
    } 

,我需要的功能contFolder *目錄::撤除(contFolder *目前,INT * xCord)改變值xCord,但無法理解如何正確傳遞此參數。 因此,我有錯誤

錯誤1錯誤C2664: 'ARL :: contFolder * ARL ::目錄::撤除(ARL :: contFolder *,詮釋*)':無法從「無符號轉換參數2 int'到'int *'

你會推薦什麼?

回答

1
myList.setDown(f->active->next, f->cord.x); 

應該

myList.setDown(f->active->next, (int*)&f->cord.x); 

你的功能setDown需要一個int*,不是int,所以通過你的變量的地址。

此外,你有一個類型不匹配。當您將座標存儲爲unsigned int s時,爲什麼你的函數採用int*?只要採取正確的類型......

contFolder* list::setDown(contFolder* current, unsigned int *xCord); 

順便說一句,你從來沒有真正使用xCord。你增加它,但它是一個指針的副本,所以它對f->cord.x沒有影響。你究竟想在這裏做什麼?如果你想增加f->cord.x那麼你需要使用(*xCord)++

+0

我也試過,雖然它顯示相同的錯誤/ – Eugene

+0

@Eugene:哦,不,它不是一樣的錯誤。我只是意識到'f-> coord.x'是一個* unsigned * int,而不是一個int。你有一個類型不匹配。你必須施放。 –

+0

那麼你會推薦做什麼? – Eugene

相關問題