Название: Объясните почему так Отправлено: ruzik от Июнь 19, 2012, 21:35 Здравствуйте есть код:
Код: QString urlOfFile = ....; D:\my_projects\RizekFaster\Classes\RFileDownloader\RFileDownloader.cpp:32: ошибка: no matching function for call to 'QNetworkAccessManager::get(QNetworkRequest (&)(QUrl))' candidates are: QNetworkReply* QNetworkAccessManager::get(const QNetworkRequest&) А если подкорректировать так, то все нормально: Код: QString urlOfFile = ....; Заранее спасибо! Название: Re: Объясните почему так Отправлено: Igors от Июнь 20, 2012, 02:23 Код Он понимает это как объявление прототипа ф-ции (где urlOfFile - имя аргумента), а не объявление переменной. Замените urlOfFile на что-нибудь от фонаря, напр foo - на этой строке все равно ошибок не будет. Избавиться можно всяко, напр Код
Название: Re: Объясните почему так Отправлено: ruzik от Июнь 20, 2012, 22:26 Простите, но если я не ошибаюсь то прототип такой функции должен бы был выглядеть примерно так:
QNetworkRequest request(QUrl urlOfFile); А не так: QNetworkRequest request(QUrl(urlOfFile)); Замена с именем не прокатывает - та же ошибка. А если использовать способ предложенный вами: Код: QUrl url(urlOfFile); D:\my_projects\RizekFaster\Classes\RFileDownloader\RFileDownloader.cpp:31: ошибка: declaration of 'QUrl url' shadows a parameter Название: Re: Объясните почему так Отправлено: Alex Custov от Июнь 20, 2012, 23:08 какие-то конфликты имён. Минимальный компилируемый код где это воспроизводится в студию.
Название: Re: Объясните почему так Отправлено: mutineer от Июнь 20, 2012, 23:25 В функции случайно нет параметра с именем url?
Название: Re: Объясните почему так Отправлено: Igors от Июнь 21, 2012, 09:58 Замена с именем не прокатывает - та же ошибка. Конечно та же ошибка, но заметьте что компилятор ничего не сказал на foo - которое нигде не объявлено. И конечно если у Вас уже есть переменная url, то надо дать др имяА если использовать способ предложенный вами: Код: QUrl url(urlOfFile); D:\my_projects\RizekFaster\Classes\RFileDownloader\RFileDownloader.cpp:31: ошибка: declaration of 'QUrl url' shadows a parameter Простите, но если я не ошибаюсь то прототип такой функции должен бы был выглядеть примерно так: Из того что "обычно мы делаем так" еще не следует что "по-другому нельзя". QNetworkRequest request(QUrl urlOfFile); А не так: QNetworkRequest request(QUrl(urlOfFile)); Код Компилится? :) Название: Re: Объясните почему так Отправлено: ruzik от Июнь 21, 2012, 21:22 Действительно был конфликт имен, который я просмотрел.
еще раз большое спасибо за помощь! Название: Re: Объясните почему так Отправлено: Alex Custov от Июнь 22, 2012, 15:03 Код Он понимает это как объявление прототипа ф-ции (где urlOfFile - имя аргумента), а не объявление переменной. "Этого не может быть, этого не может быть? этого не может быть" - бормотал Киса. Скорее всего тут конфликт имён. Функция объявляется если нет агрументов, а тут обычный конструктор с параметрами. Название: Re: Объясните почему так Отправлено: Igors от Июнь 22, 2012, 15:33 "Этого не может быть, этого не может быть? этого не может быть" - бормотал Киса. Скорее всего тут конфликт имён. Функция объявляется если нет агрументов, а тут обычный конструктор с параметрами. Нет тут никакого конфликта имен. В любом cpp файле после инклудов (чтобы были видны QNetworkRequest и QUrl) вставьте строку Код
Никакой ошибки не будет, хотя any_name_here никак не объявлен. А icc вообще внятно говорит что то ф-ция. Можно и проще, напр Код
Название: Re: Объясните почему так Отправлено: Alex Custov от Июнь 22, 2012, 15:48 То ли я С++ уже забываю... Про такие функции я помню, но почему вот это
Код
Создаёт функцию, а Код
объект? Название: Re: Объясните почему так Отправлено: mutineer от Июнь 22, 2012, 15:49 То ли я С++ уже забываю... Про такие функции я помню, но почему вот это Код
Создаёт функцию, а Код
объект? Потому что "http://ya.ru" компилятор не примет за имя параметра функции, а any_name_here за имя параметра вполне сойдет |