我有这个功能
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* list::setDown(contFolder* current, int *xCord) 来改变 xCord 的值,但不明白如何正确传递此参数。 所以我有错误
Error 1 error C2664: 'arl::contFolder *arl::list::setDown(arl::contFolder *,int *)' : cannot convert argument 2 from 'unsigned int' to 'int *'
你会推荐什么?
最佳答案
myList.setDown(f->active->next, f->cord.x);
应该是
myList.setDown(f->active->next, (int*)&f->cord.x);
您的函数 setDown
采用 int*
,而不是 int
,因此请传递变量的地址。
此外,您的类型不匹配。当您将坐标存储为 unsigned int
时,为什么您的函数采用 int*
?只需选择正确的类型...
contFolder* list::setDown(contFolder* current, unsigned int *xCord);
顺便说一句,您实际上从未使用过xCord
。您递增它,但它是指针的拷贝,因此它对 f->cord.x
没有影响。你到底想在这里做什么?如果您尝试增加 f->cord.x
,那么您需要使用 (*xCord)++
。
关于c++ - 错误 1 错误 C2664 : 'arl::contFolder *arl::list::setDown(arl::contFolder *,int *)' : cannot convert argument 2 from 'unsigned int' to 'int *' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22204985/