c++ - 错误 1 ​​错误 C2664 : 'arl::contFolder *arl::list::setDown(arl::contFolder *,int *)' : cannot convert argument 2 from 'unsigned int' to 'int *'

标签 c++ c visual-studio-2012 parameter-passing

我有这个功能

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/

相关文章:

c++ - 将全局复制到共享内存的最佳方法

c - 如何从 Linux 内核空间模块执行/调用用户空间定义的函数?

C++ 如何修复多重声明编译器错误

c++ - 项目中的链接错误

c++ - 无法使::WideCharToMultiByte 工作

c++ - 用 cin 检测输入结束

c++ - 为什么添加两个值在运行时有如此高的可变性?

c++ - 迭代对数求幂

c - svg 在记事本中编辑并在浏览器中流式传输

javascript - 对象不支持 ajax POST 到 Web Api 上的属性或方法 'val'