Russian Qt Forum

Qt => Вопросы новичков => Тема начата: build1423 от Апрель 27, 2013, 14:21



Название: QNetworkAccessManager ошибки
Отправлено: build1423 от Апрель 27, 2013, 14:21
Здраствуйте. Пишу я небольшую функцию и нужно использовать QNetworkAccessManager. При его обьявлении параметром нужно вписать QObject parent. Если я передаю QCoreApplication как параметр моей функции
Код
C++ (Qt)
void myfunc(QCoreApplication b)
{
   QNetworkAccessManager *myManager = new QNetworkAccessManager(&b);
}
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    myfunc(a);
    return 0;
}
То вылетает, что QCoreApplication приватная. Если использовать ключевое слово this
Код
C++ (Qt)
void myfunc()
{
   QNetworkAccessManager *myManager = new QNetworkAccessManager(this);
}
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    myfunc();
    return 0;
}
То вылетает error: invalid use of 'this' in non-member function.
Если в название добавить класс, с которым будем работать
Код
C++ (Qt)
void QCoreApplication::myfunc()
{
   QNetworkAccessManager *myManager = new QNetworkAccessManager(this);
}
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    return 0;
}
то вылетает error: no 'void QCoreApplication::myfunc()' member function declared in class 'QCoreApplication' и вызвать мою функцию в main нельзя. Так как правильно использовать QNetworkAccessManager?


Название: Re: QNetworkAccessManager ошибки
Отправлено: kuzulis от Апрель 27, 2013, 15:04
Изучи-ка сначала C++ и твой вопрос сам по себе решится.


Название: Re: QNetworkAccessManager ошибки
Отправлено: build1423 от Апрель 27, 2013, 15:29
Изучи-ка сначала C++ и твой вопрос сам по себе решится.
Ну правильно. Вместо того, что бы сказать, которую строчку нужно исправить, и как, потратив на это 5 секунд, Вы мне предлагаете изучить полностью С++. Прочтение  одной книги будет маловато, как по мне. Нужно прочитать миннимум две, по пару раз. Времени на это потратится, предположим, 3 месяца. Задачу, которую мне нужно сделать, сдавать через 2 недели. Так не думаете ли Вы, что совет, даный Вами же не рационален.


Название: Re: QNetworkAccessManager ошибки
Отправлено: alex312 от Апрель 27, 2013, 15:42
что совет, даный Вами же не рационален.
Зато бесплатный  ;D


Название: Re: QNetworkAccessManager ошибки
Отправлено: build1423 от Апрель 27, 2013, 15:52
Издеваться над новичком в теме для новичков это конечно дело весёлое и благородное(а главное - бесплатное!), но я всё-же надеюсь на помощь.


Название: Re: QNetworkAccessManager ошибки
Отправлено: alex312 от Апрель 27, 2013, 16:12
но я всё-же надеюсь на помощь.
Найтиде кого-то, кто сделает за вас эту лабораторку. Это серьезно, с вашим знанием С++ - это единственный разумный выход для вас.


Название: Re: QNetworkAccessManager ошибки
Отправлено: build1423 от Апрель 27, 2013, 17:24
Вы издеваетесь? Я не поучительств ищу на форуме, а ответ на вопрос. С++ я знаю в достаточной мере для того, что бы написать то, что мне нужно. Но вот немогу я правильно инициализировать обьект класса. В примерах, которых куча, взять хотябы http://qt-project.org/doc/qt-4.8/qnetworkaccessmanager.html (http://qt-project.org/doc/qt-4.8/qnetworkaccessmanager.html) написано QNetworkAccessManager *manager = new QNetworkAccessManager(this); Они тоже не знают С++ и им его надо учить? Если не можете помочь, так уж молчите, прошу.


Название: Re: QNetworkAccessManager ошибки
Отправлено: alex312 от Апрель 27, 2013, 17:32
Вы издеваетесь? Я не поучительств ищу на форуме, а ответ на вопрос. С++ я знаю в достаточной мере для того, что бы написать то, что мне нужно.
А может это вы издеваетесь? И если вы "знаете" С++, то что вам не понятно в строке
Код
C++ (Qt)
QNetworkAccessManager ( QObject * parent = 0 );
  ???


Название: Re: QNetworkAccessManager ошибки
Отправлено: build1423 от Апрель 27, 2013, 17:42
Что именно должно быть параметром? Только не надо ответов вроде указатель на обьект типа QObject.


Название: Re: QNetworkAccessManager ошибки
Отправлено: kambala от Апрель 27, 2013, 17:45
С++ я знаю в достаточной мере для того, что бы написать то, что мне нужно.
код в первом посте говорит совсем об обратном

чтобы исправить ошибку в первом варианте, параметр функции должен быть не QCoreApplication b, а const QCoreApplication &b


Название: Re: QNetworkAccessManager ошибки
Отправлено: build1423 от Апрель 27, 2013, 18:01
параметр функции должен быть не QCoreApplication b, а const QCoreApplication &b
error: invalid conversion from 'const QObject*' to 'QObject*' [-fpermissive]


Название: Re: QNetworkAccessManager ошибки
Отправлено: alex312 от Апрель 27, 2013, 18:08
error: invalid conversion from 'const QObject*' to 'QObject*' [-fpermissive]
Код
C++ (Qt)
QNetworkAccessManager *myManager = new QNetworkAccessManager(const_cast<QCoreApplication*>(&b));


Название: Re: QNetworkAccessManager ошибки
Отправлено: kambala от Апрель 27, 2013, 18:20
ну тогда параметр без конст просто


Название: Re: QNetworkAccessManager ошибки
Отправлено: alex312 от Апрель 27, 2013, 18:23
ну тогда параметр без конст просто
gcc такого не пропустит


Название: Re: QNetworkAccessManager ошибки
Отправлено: Bepec от Апрель 27, 2013, 18:31
Та вы заканали, знатоки. Тупо не передавай ничего :)

т.е.   QNetworkAccessManager *myManager = new QNetworkAccessManager;

Финита ля комедиа?


Название: Re: QNetworkAccessManager ошибки
Отправлено: VPS от Апрель 27, 2013, 18:32
build1423, параметр в функцию можно передавать (кроме как по значению) по ссылке или через указатель, в данном случае, наверно лучше через указатель. А также в вашем примере сразу же после выполнения функции программа закончит свою работу. Посмотрите примеры использования функции "main" в Qt...

П.С.: ну и Вы видимо не разобрались, что такое классы, раз пишите такое:
Код:
void QCoreApplication::myfunc()


Название: Re: QNetworkAccessManager ошибки
Отправлено: alex312 от Апрель 27, 2013, 18:43
Та вы заканали, знатоки. Тупо не передавай ничего :)
человек хочет что бы каждый QNetworkAccessManager знал своего родителя  ;D
Финита ля комедиа?
Ждем новых серий.


Название: Re: QNetworkAccessManager ошибки
Отправлено: kambala от Апрель 27, 2013, 20:03
ну тогда параметр без конст просто
gcc такого не пропустит
почему?


Название: Re: QNetworkAccessManager ошибки
Отправлено: build1423 от Апрель 27, 2013, 20:06
Та вы заканали, знатоки. Тупо не передавай ничего :)
Финита ля комедиа?
Си, грациас)


П.С.: ну и Вы видимо не разобрались, что такое классы, раз пишите такое:
Код:
void QCoreApplication::myfunc()
Такую строчку я нашёл на одном из форумов, так что да.

человек хочет что бы каждый QNetworkAccessManager знал своего родителя  ;D
Собственно такого я не говорил.

ЗЫ: И вот вроде форум нормальный, тем много, юзеров тоже, но на то, чтобы дождаться слов "не передавай ничего" пришлось читать поучительства и издёвки 2 страницы от разных "специалистов".


Название: Re: QNetworkAccessManager ошибки
Отправлено: kambala от Апрель 27, 2013, 20:43
ЗЫ: И вот вроде форум нормальный, тем много, юзеров тоже, но на то, чтобы дождаться слов "не передавай ничего" пришлось читать поучительства и издёвки 2 страницы от разных "специалистов".
Цитировать
При его обьявлении параметром нужно вписать QObject parent
вот откуда мы должны знать что тебе этот параметр может вовсе и не нужен? вдруг перед тобой стоит задача чтобы QNAM обязательно был с родителем. а то, что ты не знаешь что такое значение параметра по умолчанию, уже совсем другой разговор.


Название: Re: QNetworkAccessManager ошибки
Отправлено: alex312 от Апрель 27, 2013, 20:47
ну тогда параметр без конст просто
gcc такого не пропустит
почему?
не, все работает. Что-то попутал ::)


Название: Re: QNetworkAccessManager ошибки
Отправлено: Bepec от Апрель 27, 2013, 20:50
Я ещё раньше хотел ответить, но думал и без меня помогут :D

Помогли так помогли :D

PS обращайся.