对类的未定义引用
undefined reference to a class
我正在用Qt4构建一个小游戏。 以下是代码:
液晶控制.h :
#ifndef LCDCONTROL_H
#define LCDCONTROL_H
#include <QLCDNumber>
#include <QtGui>
#include <QWidget>
class lcdControl: public QWidget
{
Q_OBJECT
public:
lcdControl(QWidget *parent=0);
signals:
void valueChanged(int newValue);
public slots:
void setValue(int value);
//void setRange(int minValue, int maxValue);
//void quit();
private:
QSlider *slider;
//QPushButton *quitbutton;
};
#endif
液晶控制.cpp :
#include <QLCDNumber>
#include <QSlider>
#include <QGridLayout>
#include "lcdcontrol.h"
lcdControl::lcdControl(QWidget *parent): QWidget(parent)
{
QLCDNumber *lcd = new QLCDNumber(2); //2 for 2 digits
lcd->setSegmentStyle(QLCDNumber::Filled);
slider = new QSlider(Qt::Horizontal);
slider->setRange(0,99);
slider->setValue(0);
connect(slider,SIGNAL(valueChanged(int)),lcd,SLOT(display(int)));
connect(slider,SIGNAL(valueChanged(int)),this,SIGNAL(valueChanged(int)));
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(lcd);
layout->addWidget(slider);
setLayout(layout);
setFocusProxy(slider);
}
void lcdControl::setValue(int value)
{
slider->setValue(value);
}
绘图.h :
#ifndef DRAWING_H
#define DRAWING_H
#include <QPushButton>
class drawingClass : public QWidget
{
Q_OBJECT
public:
drawingClass(QWidget *parent=0);
private:
QPushButton *quitbutton;
};
#endif
绘图.cpp :
#include <QVBoxLayout>
#include <QGridLayout>
#include <QtGui>
#include "drawing.h"
#include "lcdcontrol.h"
drawingClass::drawingClass(QWidget *parent): QWidget(parent)
{
quitbutton = new QPushButton(tr("&Quit!"));
connect(quitbutton,SIGNAL(clicked()),qApp,SLOT(quit()));
lcdControl *angle = new lcdControl;
lcdControl *force = new lcdControl;
QVBoxLayout *leftlayout = new QVBoxLayout;
leftlayout->addWidget(angle);
leftlayout->addWidget(force);
QGridLayout *mainlayout = new QGridLayout;
mainlayout->addWidget(quitbutton,0,0);
mainlayout->addLayout(leftlayout);
mainlayout->setColumnStrech(1,10);
setLayout(mainlayout);
}
主.cpp
#include <QApplication>
#include <QtGui>
#include "drawing.h"
int main(int argc, char **argv)
{
QApplication app(argc,argv);
drawingClass ob;
ob.resize(500,200);
ob.show();
return app.exec();
}
错误是:
main.cpp:(.text.startup+0x28): undefined reference to `drawingClass::drawingClass(QWidget*)'
main.cpp:(.text.startup+0x6e): undefined reference to `vtable for drawingClass'
main.cpp:(.text.startup+0x77): undefined reference to `vtable for drawingClass'
main.cpp:(.text.startup+0xb4): undefined reference to `vtable for drawingClass'
main.cpp:(.text.startup+0xbd): undefined reference to `vtable for drawingClass'
collect2: ld returned 1 exit status
请帮我解决这个问题。
> YOu 没有向链接器提供 drawingClass
构造函数的定义。
很可能您忘记将该.cpp文件添加到项目中。
相关文章:
- 编译C++时未定义的引用
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 未定义的引用在哪里
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 对 Scalar ::Scalar() 的未定义引用
- 已定义函数时出现 G++ "未定义的引用"错误
- 链接 cmake 时出现未定义的引用错误
- 对复制 CTOR 和 CTOR 的未定义引用
- 错误:未定义对'oboe::AudioStreamBuilder::openStream(oboe::AudioStream**)'的引用
- 右值引用未定义的行为
- 对"vtable for DigitalClock"的未定义引用 - 未定义对"DigitalClock::staticMetaObject"的引用 - Qt
- 函数类型到函数类型的引用:未定义的引用
- avcodec_alloc_context引用未定义,但ffmpeg链接顺序正确
- 从c++调用Fortran子程序,链接时引用未定义
- 枚举引用未定义,但位于包含的头文件中