• 9234阅读
  • 5回复

【提问】关于类继承的问题 [复制链接]

上一主题 下一主题
离线chip_7
 
只看楼主 倒序阅读 楼主  发表于: 2006-02-22
我 定义了一个类line,继承了QLineEdit,程序如下:
#include <qlineedit.h>

class line:public QLineEdit
{public:
        line(QWidget* parent=0,const char* name=0);
};

line::line(QWidget* parent,const char* name)
:QLineEdit(parent,name)
{
}

其实line与原来的QLineEdit一样
但一编译就出错,不知道是哪里有问题,想请大家帮忙!
[ 此贴被XChinux在2006-02-21 21:47重新编辑 ]
离线vancezhang

只看该作者 1楼 发表于: 2006-02-23
应该没错!是不是说没有qMain?加上下面的CODE再编译一下

int main(int argc, char *argv[])
{
  QApplication app(argc, argv);

  line *l=new line();

  app.setMainWidget(l);
  l->show();

  return app.exec();
}
离线zccmin
只看该作者 2楼 发表于: 2006-02-23
一楼的说的有道理。不过应该不犯这错误吧!
离线chip_7
只看该作者 3楼 发表于: 2006-02-24
我知道问题出在哪儿了,
  当我把类声明和类成员函数分开写,就不会出现编译问题了,即line.h和line.cpp分开写:
                      /-----line.h------/
#include <qlineedit.h>

class line:public QLineEdit
{public:
    line(QWidget* parent=0,const char* name=0);
};
                /-------line.cpp------/
#include "line.h"

line::line(QWidget* parent,const char* name)
:QLineEdit(parent,name)
{
}

如果写在一起并命名为line.h的头文件就会出错:
                  /-------line.h--------/
#include <qlineedit.h>

class line:public QLineEdit
{public:
    line(QWidget* parent=0,const char* name=0);
};

line::line(QWidget* parent,const char* name)
:QLineEdit(parent,name)
{
}

具体还是不明白为什么会这样,还望高手指点!!!
离线vancezhang

只看该作者 4楼 发表于: 2006-02-24
应该是你的编译器的问题,我用Borland编译就没错。
离线XChinux

只看该作者 5楼 发表于: 2006-02-24
把头文件和cpp文件分开写即可。
因为moc要处理这两个。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个