• 13523阅读
  • 39回复

[提问]高人请进:invalid use of undefined type "strcut QUrlOperator" [复制链接]

上一主题 下一主题
离线dayongjiang
 
只看楼主 倒序阅读 楼主  发表于: 2011-05-13
出现如下错误,该如何解决啊,
invalid use of undefined type struct QUrlOperator'
....../include/qurlinfo.h:46:forward declaration of 'struct QUrlOperator'
请各位高人给讲解下,我弄了好半天了,头文件啥的都包含了#include <qurloperatot.h>
离线dayongjiang
只看该作者 1楼 发表于: 2011-05-13
没有高人给予指示么?在线等啊
离线wxj120bw

只看该作者 2楼 发表于: 2011-05-13
这个类QUrlOperator'是你自己定义的吗  这种错误是因为头文件的路径未知
离线dayongjiang
只看该作者 3楼 发表于: 2011-05-13
标准类啊
离线zhy282289
只看该作者 4楼 发表于: 2011-05-14
struct QUrlOperator用了前置声明.但是用的时候又找又找不到这个QUrlOperator类的定义,
为什么我脸这么胖~
离线dayongjiang
只看该作者 5楼 发表于: 2011-05-14
急急急

离线dayongjiang
只看该作者 6楼 发表于: 2011-05-14
顶顶顶顶
离线dayongjiang
只看该作者 7楼 发表于: 2011-05-14
看来这个论坛没高人啊
离线dbzhang800

只看该作者 8楼 发表于: 2011-05-14
这个会对你有帮助:
http://www.beiww.com/doc/oss/smart-questions.html

题外:你应该考虑贴你的完整的测试代码 (这种问题10行代码应该就够了,如果问题不能重现,最大可能就是你犯了比较低级的错误 )
离线dayongjiang
只看该作者 9楼 发表于: 2011-05-14
老兄,叫我QQ1421885125。详细聊,我等了好几天了
离线dayongjiang
只看该作者 10楼 发表于: 2011-05-14
cpp文件如下:
qInitNetworkProtocols();
localOperator=new QUrlOperator("192.168.1.22");
localOperator->setUser("tdmesql");
localOperator->setPassword("10304");
localOperator->copy("c.txt","file:/home",FALSE);
.h文件如下:
QUrlOperator * localOperator;
包含的头文件如下:
#include <qurloprator.h>
#include <qnetwork.h>
报错:invalid use of undefined type 'struct QUrlOperator'
...../include/qurlinfo.h:46: forward declaration of 'struct QUrlOperator'
离线dayongjiang
只看该作者 11楼 发表于: 2011-05-15
顶顶顶顶顶顶顶
离线dbzhang800

只看该作者 12楼 发表于: 2011-05-15
引用第11楼dayongjiang于2011-05-15 13:53发表的  :
顶顶顶顶顶顶顶


贴个10行左右的完整的测试程序,并 贴出该程序完整的出错消息。
离线浪漫天使
只看该作者 13楼 发表于: 2011-05-15
狠一点的话 打包整个工程上来供大家围观一下。
离线dayongjiang
只看该作者 14楼 发表于: 2011-05-15
回 12楼(dbzhang800) 的帖子
编译错误
离线dayongjiang
只看该作者 15楼 发表于: 2011-05-15
回 12楼(dbzhang800) 的帖子
这个事源码
离线dayongjiang
只看该作者 16楼 发表于: 2011-05-15
回 13楼(浪漫天使) 的帖子
兄弟,我QQ 1421885125  劳烦您加下
离线浪漫天使
只看该作者 17楼 发表于: 2011-05-15
你的pro文件里面加入下面一行看看

CONFIG += network
离线dayongjiang
只看该作者 18楼 发表于: 2011-05-15
回 17楼(浪漫天使) 的帖子
我加过了,还是不同样的错啊
离线浪漫天使
只看该作者 19楼 发表于: 2011-05-15
.h文件中你类的声明前加入
class QUrlOperator;


ps:你不上工程 大家很难全方位的看到问题,只能靠猜,累!


离线dayongjiang
只看该作者 20楼 发表于: 2011-05-15
回 19楼(浪漫天使) 的帖子
好,您稍等,我上工程
离线dayongjiang
只看该作者 21楼 发表于: 2011-05-15
回 20楼(dayongjiang) 的帖子
main函数:
#include "Form.h"
#include <qapplication.h>
#include <qnetwork.h>

int main( int argc, char **argv )
{    
    QApplication a(argc,argv);
    qInitNetworkProtocols();
    Form1 *dlg=new Form1;
    a.setMainWidget(dlg);
    dlg->show();
    return a.exec();
}
Form.h代码
#ifndef FORM1_H
#define FORM1_H
#include <qvariant.h>
#include <qwidget.h>
#include <qurloperator.h>
class QVBoxLayout;
class QHBoxLayout;
class QGridLayout;
class QPushButton;

class Form1 : public QWidget
{
    Q_OBJECT

public:
    Form1( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
    ~Form1();

    QPushButton* PushButton1;

protected:
   QUrlOperator *localOperator;
protected slots:
    void Connect();
    virtual void languageChange();
};

#endif // FORM1_H
Form.cpp代码:
#include "Form.h"
#include <qvariant.h>
#include <qpushbutton.h>
#include <qlayout.h>
#include <qtooltip.h>
#include <qwhatsthis.h>
Form1::Form1( QWidget* parent, const char* name, WFlags fl )
    : QWidget( parent, name, fl )
{
    if ( !name )
    setName( "Form1" );
    localOperator.listChildren();
    PushButton1 = new QPushButton( this, "PushButton1" );
    PushButton1->setGeometry( QRect( 30, 130, 211, 51 ) );
    languageChange();
    resize( QSize(281, 220).expandedTo(minimumSizeHint()) );
    connect( PushButton1, SIGNAL( clicked() ), this, SLOT( Connect() ) );
}

Form1::~Form1()
{
    // no need to delete child widgets, Qt does it all for us
}

void Form1::languageChange()
{
    setCaption( tr( "Form1" ) );
    PushButton1->setText( tr( "PushButton1" ) );
}
void Form1::Connect()
{
   localOperator=new QUrlOperator("192.168.1.22");
   localOperator->setUser("tdmesql");
   localOperator->setPassword("10304");
   localOperator->copy("c.txt","file:/home",FALSE);
}
离线dayongjiang
只看该作者 22楼 发表于: 2011-05-15
.pro代码:
TEMPLATE   =app
CONFIG        =qt  qtopia  warn_on  release
HEADERS   =Form.h
SOURCES  =Form.cpp
                        main.cpp\
INTERFACES =
CONFIG  +=network
离线浪漫天使
只看该作者 23楼 发表于: 2011-05-15
h 文件里面的
class Form1 : public QWidget 这行
前面  加入
class QUrlOperator;
看看
离线浪漫天使
只看该作者 24楼 发表于: 2011-05-15
pro文件里面
INTERFACES =
是空的话
建议 删除
离线dayongjiang
只看该作者 25楼 发表于: 2011-05-15
回 24楼(浪漫天使) 的帖子
你说的,我全试过了,还是报错,和以前的错一样的
离线alexltr

只看该作者 26楼 发表于: 2011-05-15
localOperator在使用前有声明没有定义

localOperator.listChildren();

你在::Connect中定义的,但是是在上面这个语句之后。
我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
离线dayongjiang
只看该作者 27楼 发表于: 2011-05-15
回 26楼(alexltr) 的帖子
即使我把localOperator.listChildren();

删掉,还是报错啊
离线浪漫天使
只看该作者 28楼 发表于: 2011-05-16
再详细的看了一下错误信息 发现你的第一个错误信息是 FTP.cpp 的 85行

而你的pro文件 里面 没有看到 FTP.cpp 和 FTP.h 的字样。

而且你上的文件中也没有提到 FTP.cpp
离线dayongjiang
只看该作者 29楼 发表于: 2011-05-16
回 28楼(浪漫天使) 的帖子
您说的FTP.cpp那个错误是以前一个工程的,我新建了一个最简单的工程,就是我上传的工程文件,报的错和以前的错是一样一样的
我现在怀疑是不是我的qt配置出现错误了,我用我目前的配置去编译qt自带的例子都编译不过去
离线dayongjiang
只看该作者 30楼 发表于: 2011-05-16
回 28楼(浪漫天使) 的帖子
我发现QT自带的例子在.h文件中这么定义的:QUrlOperator   op;
而我也这么定义,编译就报错:incomplete type
离线浪漫天使
只看该作者 31楼 发表于: 2011-05-16
因为你用的是qt2的版本,本人手头上没有这个版本
没办法编译重现,所以只能猜。
不知道你编译的例子是不是对应的qt2版本带的例子?
离线dbzhang800

只看该作者 32楼 发表于: 2011-05-16
引用第31楼浪漫天使于2011-05-16 09:39发表的  :
因为你用的是qt2的版本,本人手头上没有这个版本
没办法编译重现,所以只能猜。
不知道你编译的例子是不是对应的qt2版本带的例子?

恩,其实我一直奇怪,他为什么不能贴个最简单的完整的测试程序(按他描述的这种情况,这样的程序不会超过10行)

其次,没有用过Qt2,我只是对

CONFIG        =qt  qtopia  warn_on  release

这条语句用 = 而不是 += 稍有点疑虑(Qt2的 qmake 只需要这个的4个feature文件就够了?)。
离线dayongjiang
只看该作者 33楼 发表于: 2011-05-16
回 31楼(浪漫天使) 的帖子
当然是啊,
离线dayongjiang
只看该作者 34楼 发表于: 2011-05-16
使用之前必须用qInitNetworkProtocols () 注册,这个是库函数,在qnetwork.h中,我#include <qnetwork.h> ,但是编译时报错:undefined reference to qInitNetworkProtocols () 。我都晕了
离线浪漫天使
只看该作者 35楼 发表于: 2011-05-16
你确定 qInitNetworkProtocols()  是qt2版本的库函数吗??
离线dayongjiang
只看该作者 36楼 发表于: 2011-05-16
回 35楼(浪漫天使) 的帖子
我确定,我在库头文件里都找见了
离线dayongjiang
只看该作者 37楼 发表于: 2011-05-16
回 35楼(浪漫天使) 的帖子
兄弟,告诉我你的QQ。我的是1421885125
离线dayongjiang
只看该作者 38楼 发表于: 2011-05-16
有谁知道qInitNetworkProtocols()  库函数在哪个库里,我现在找不到这个库
离线alexltr

只看该作者 39楼 发表于: 2011-05-18
楼主,这个帖子搞得这么火,结果怎样了?跟大家说一下结果撒。
我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
快速回复
限100 字节
 
上一个 下一个