• 5472阅读
  • 7回复

啥错误 [复制链接]

上一主题 下一主题
离线175669163
 
只看楼主 倒序阅读 楼主  发表于: 2010-12-24
关键词: 错误QObject
#include <QtCore/QCoreApplication>
#include <QObject>
#include <QDebug>
#include <QApplication>
class one:public QObject
{
Q_OBJECT
public:
one();
};
one::one()
{
qDebug()<<"one";
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
one* q=new one();
return a.exec();
}


TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
QT +=gui
# Input
SOURCES += test.cpp


错误
undefined reference to 'vtable for one'
error: collect2: ld returned 1 exit status
离线xtfllbl

只看该作者 1楼 发表于: 2010-12-24
建议楼主使用creator自动创建一个空项目,然后回来和你自己的比对一下。

另外建议楼主学好C++
上海欢迎您
离线cycloneii

只看该作者 2楼 发表于: 2010-12-24
两个问题:
1)你的one::one()居然没有初始化基类QObject
应该写成
one::one() :
    QObject()
{
}

2)one类里面使用了Q_OBJECT宏,那么它需要插入一个moc过程,也就是将Q_OBJECT宏展开的过程,这个过程要求有头文件,也就是说如果你创建一个main.h文件,把one类的定义移过去,这样就没有问题了。
离线175669163
只看该作者 3楼 发表于: 2010-12-27
回 2楼(cycloneii) 的帖子
QObject()会自动调吧
离线cycloneii

只看该作者 4楼 发表于: 2010-12-27
回 3楼(175669163) 的帖子
不会,你试试把one类的定义移到另外一个头文件就知道了。或者你对Makefile熟悉的,看看Makefile文件可就行了
离线175669163
只看该作者 5楼 发表于: 2010-12-27
头文件分开,可以编译过了
QT中多继承俩个基类是不可同时包含Q_OBJECT?
class A
{
  Q_OBJECT
}
class B
{
  Q_OBJECT
}
class C:public  A,public B
{
  Q_OBJECT
}
离线175669163
只看该作者 6楼 发表于: 2010-12-27
回 4楼(cycloneii) 的帖子
可以自动调的,不信你试试
class a
{
public:
            a()
             {
                  qDebug()<<"a";
             }
};
class b:public a
{
public:
           b()
             {
                  qDebug()<<"b";
             }
};

main()
{
b *p=new b();
}

结果:打印出b a
离线175669163
只看该作者 7楼 发表于: 2010-12-27
如果不指定构造函数,回调用默认的构造函数的
快速回复
限100 字节
 
上一个 下一个