Ошибка 1 ошибка C2664: «arl :: contFolder * arl :: list :: setDown (arl :: contFolder *, int *)»: невозможно преобразовать аргумент 2 из «unsigned int» в «int *»

0

У меня есть функция

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, но не может понять, как правильно передать этот аргумент. Поэтому у меня есть ошибка

Ошибка 1 ошибка C2664: 'arl :: contFolder * arl :: list :: setDown (arl :: contFolder *, int *)': не может преобразовать аргумент 2 из 'unsigned int' в 'int *'

Что бы вы посоветовали?

Теги:
parameter-passing
visual-studio-2012

1 ответ

1
Лучший ответ
myList.setDown(f->active->next, f->cord.x);

Должно быть

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

Ваша функция setDown принимает int*, а не int, поэтому передайте адрес вашей переменной.

Кроме того, у вас есть несоответствие типа. Почему ваша функция принимает int* когда вы храните координаты как unsigned int s? Просто возьмите правильный тип...

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

Кстати, вы никогда не используете xCord. Вы увеличиваете его, но это копия указателя, поэтому он не влияет на f->cord.x Что вы на самом деле пытаетесь сделать здесь? Если вы пытаетесь f->cord.x тогда вам нужно будет использовать (*xCord)++.

  • 0
    Я тоже это попробовал, хотя он показывает ту же ошибку /
  • 0
    @ Евгений: О нет, это не та же ошибка. Я только что понял, что f->coord.x - это f->coord.x без знака , а не f->coord.x . У вас несоответствие типов. Тебе придется сыграть.
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню