• 6650阅读
  • 10回复

QT4.5.2中forward declaration 和 invalid use of undefined type [复制链接]

上一主题 下一主题
离线cxin6
 
只看楼主 倒序阅读 楼主  发表于: 2009-09-03
我想在sample的StyleSheetEditor例子中,再加一个弹出对话框。在新建这个新对话框的.ui,.h,.cpp后,
我在StyleSheetEditor .h中加入了带下划线的代码
class Mode;
class StyleSheetEditor : public QDialog
{
    Q_OBJECT

public:
    StyleSheetEditor(QWidget *parent = 0);

private slots:
    void on_mode_clicked();

private:
    Mode *mode;
    Ui::StyleSheetEditor ui;
};
我在StyleSheetEditor .cpp中加入了带下划线的代码
#include "Mode.h"
StyleSheetEditor::StyleSheetEditor(QWidget *parent)
    : QDialog(parent)
{
    ui.setupUi(this);
    mode = new Mode(this);
}

void StyleSheetEditor::on_mode_clicked()
{  
    mode->show();
    mode->activateWindow();

}
编译出错,提示:
error: forward declaration of `struct Mode'
error: invalid use of undefined type `struct Mode'

这是为什么?我反复检查,也看不出来。StyleSheetEditor也是被mainwindow这样调出来的呀。
离线adang322

只看该作者 1楼 发表于: 2009-09-03
试试把“#include "Mode.h"”加到头文件里面看看。
Linux、C/C++、QT、OpenGL、Linux/Unix socket、Python
离线dbzhang800

只看该作者 2楼 发表于: 2009-09-03
从你贴的代码中看不出什么问题,或许,你应该贴你的mode.h文件
离线cxin6
只看该作者 3楼 发表于: 2009-09-03
引用第1楼adang322于2009-09-03 18:58发表的  :
试试把“#include "Mode.h"”加到头文件里面看看。

不行,这个我早试过了,不过还是要谢谢你
离线rqzrqh

只看该作者 4楼 发表于: 2009-09-03
C++的问题,前向定义。
struct Mode还没构建好,只能定义Mode指针,而不能实例化操作
离线cxin6
只看该作者 5楼 发表于: 2009-09-04
引用第2楼dbzhang800于2009-09-03 19:24发表的  :
从你贴的代码中看不出什么问题,或许,你应该贴你的mode.h文件

mode.h

#include <QDialog>
#include "ui_Mode.h"
class Mode : public QDialog
{
    Q_OBJECT

public:
    Mode(QWidget *parent = 0);

private:
    Ui::Mode ui;
};
离线cxin6
只看该作者 6楼 发表于: 2009-09-04
mode.cpp

#include <QtGui>
#include "Mode.h"

Mode::Mode(QWidget *parent)
    : QDialog(parent)
{
    ui.setupUi(this);
}
离线cxin6
只看该作者 7楼 发表于: 2009-09-04
引用第4楼rqzrqh于2009-09-03 19:35发表的  :
C++的问题,前向定义。
struct Mode还没构建好,只能定义Mode指针,而不能实例化操作

有点道理,我发现如果我不实例化操作,不加StyleSheetEditor .cpp带下划线的代码,编译就没问题。
但是我实在看不出问题出在哪
离线shiroki

只看该作者 8楼 发表于: 2009-09-04
大小写的问题吧
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线cxin6
只看该作者 9楼 发表于: 2009-09-04
引用第8楼shiroki于2009-09-04 10:21发表的  :
大小写的问题吧

版主的意思是mode和Mode的区别吧
这个我有尝试过统一成Mode,还是一样的结果
离线cxin6
只看该作者 10楼 发表于: 2009-09-04
我是使用的QT4.5.2的QT creator编译的,会不会有问题?
是不是要使用vs编译才行?
快速回复
限100 字节
 
上一个 下一个