• 5084阅读
  • 6回复

好奇怪的问题 [复制链接]

上一主题 下一主题
离线ashe0817
 

只看楼主 倒序阅读 楼主  发表于: 2014-06-17
Qt5.3 + VC2013

下面这段代码可以编译通过


#include "mainwindow.h"
#include <QApplication>
#include <QNetworkRequest>
#include <QNetworkAccessManager>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    QNetworkAccessManager manager;
    //QString url = "http://www.baidu.com";
    QNetworkRequest req(QUrl("http://www.baidu.com"));
    manager.get(req);

    return a.exec();
}

这样却不行了。。。


#include "mainwindow.h"
#include <QApplication>
#include <QNetworkRequest>
#include <QNetworkAccessManager>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    QNetworkAccessManager manager;
    QString url = "http://www.baidu.com";
    QNetworkRequest req(QUrl(url));   // 这是把这里换成了一个变量

    manager.get(req);  // 无法将参数 1 从“QNetworkRequest (__cdecl *)(QUrl)”转换为“const QNetworkRequest &” \
      原因如下:  无法从“overloaded-function”转换为“const QNetworkRequest” \
      无构造函数可以接受源类型,或构造函数重载决策不明确

    return a.exec();
}
离线ashe0817

只看该作者 1楼 发表于: 2014-06-17
只是把字符串常亮换成了变量,就不行了。
离线bingyifeng

只看该作者 2楼 发表于: 2014-06-17
修改成 QNetworkRequest req (QUrl(url, QUrl::TolerantMode));
编译OK,
说明   QNetworkRequest req(QUrl(url));  
这样的写法,和你预期的不一样,并没有构造 QUrl的对象出来。
具体的原因不明,不知道当成什么处理了。
<span style="color:blue ">淘宝,绿石斋</span> <a href="http://shop33295817.taobao.com“> <span style="color:blue ">各种水晶饰品,手链,项链 </span></a>
离线dbzhang800

只看该作者 3楼 发表于: 2014-06-17
回 bingyifeng 的帖子
bingyifeng:修改成 QNetworkRequest req (QUrl(url, QUrl::TolerantMode));
编译OK,
说明   QNetworkRequest req(QUrl(url));  
这样的写法,和你预期的不一样,并没有构造 QUrl的对象出来。
具体的原因不明,不知道当成什么处理了。 (2014-06-17 12:17) 

就是错误所报出的,req被定义成了函数指针
离线ashe0817

只看该作者 4楼 发表于: 2014-06-17
回 bingyifeng 的帖子
bingyifeng:修改成 QNetworkRequest req (QUrl(url, QUrl::TolerantMode));
编译OK,
说明   QNetworkRequest req(QUrl(url));  
这样的写法,和你预期的不一样,并没有构造 QUrl的对象出来。
具体的原因不明,不知道当成什么处理了。 (2014-06-17 12:17) 

谢了,测试可以。
离线ashe0817

只看该作者 5楼 发表于: 2014-06-17
回 dbzhang800 的帖子
dbzhang800:就是错误所报出的,req被定义成了函数指针 (2014-06-17 13:00) 

我记得以前用Qt5.2的时候都是这么写的没问题的。。。
离线dbzhang800

只看该作者 6楼 发表于: 2014-06-17
回 ashe0817 的帖子
ashe0817:我记得以前用Qt5.2的时候都是这么写的没问题的。。。 (2014-06-17 13:16)

1. 这个和Qt没关系,Qt作为库,不可能改变C++的语法,唯一可能相关的是你的编译器。

C++的中陷阱是挺多的,选择了,就要适应。

2.  你的问题和下面的问题是一样的。

    int a = 0;
    int b1(int(0));
    int b2(int(a));
    int b3{int(a)};

其中b2 是一个函数声明。 b1, b3是两个整数。这也是为什么,C++11标准中要引入新的 {}

快速回复
限100 字节
 
上一个 下一个