Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt 4.7未找到符号错误_C++_Qt_Qt4.7 - Fatal编程技术网

C++ Qt 4.7未找到符号错误

C++ Qt 4.7未找到符号错误,c++,qt,qt4.7,C++,Qt,Qt4.7,谁能向我解释一下这个错误吗?似乎这是moc发生的错误: Undefined symbols: make: Leaving directory `/Users/Dylan/Documents/programming/qt/Clock-build-desktop' "ClockDelegate::ClockDelegate(QObject*)", referenced from: AnalogClockDelegate::AnalogClockDelegate(QObject*)in

谁能向我解释一下这个错误吗?似乎这是moc发生的错误:

Undefined symbols:
make: Leaving directory `/Users/Dylan/Documents/programming/qt/Clock-build-desktop'
  "ClockDelegate::ClockDelegate(QObject*)", referenced from:
      AnalogClockDelegate::AnalogClockDelegate(QObject*)in AnalogClockDelegate.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [Clock.app/Contents/MacOS/Clock] Error 1
The process "/usr/bin/make" exited with code 2.
Error while building project Clock (target: Desktop)
When executing build step 'Make'
代表:

#ifndef CLOCKDELEGATE_H
#define CLOCKDELEGATE_H

#include <QObject>

class QTime;
class QWidget;

class ClockDelegate : public QObject
{
    Q_OBJECT

public:

    explicit ClockDelegate(QObject *parent);

    virtual void paintClock(QWidget *, QTime *) = 0;
};

#endif // CLOCKDELEGATE_H
#ifndef ANALOGCLOCKDELEGATE_H
#define ANALOGCLOCKDELEGATE_H

#include <QColor>
#include <QPoint>

#include "ClockDelegate.h"

class QWidget;

class AnalogClockDelegate : public ClockDelegate
{
    Q_OBJECT

public:

    explicit AnalogClockDelegate(QObject *parent);

    void paintClock(QWidget *, QTime *);

private:

    void setupClockHands();

    void drawClockSurface(QWidget *clockView, QTime *);

    void drawHourComponent(QWidget *clockView);

    void drawMinuteComponent(QWidget *clockView, QTime *);

    void drawSecondComponent(QWidget *clockView, QTime *);

    QPoint   m_center;
    QPoint   m_hourHand[3];
    QPoint   m_minuteHand[3];
    QPoint   m_secondHand[2];

    QColor   m_hourColor;
    QColor   m_minuteColor;
    QColor   m_secondColor;
    QColor   m_clockFaceColor;
};

#endif // ANALOGCLOCKDELEGATE_H
\ifndef CLOCKDELEGATE\u H
#定义时钟委托
#包括
类QTime;
类QWidget;
类ClockDelegate:公共QObject
{
Q_对象
公众:
显式ClockDelegate(QObject*父对象);
虚拟空绘制时钟(QWidget*,QTime*)=0;
};
#endif//CLOCKDELEGATE\u H
代表:

#ifndef CLOCKDELEGATE_H
#define CLOCKDELEGATE_H

#include <QObject>

class QTime;
class QWidget;

class ClockDelegate : public QObject
{
    Q_OBJECT

public:

    explicit ClockDelegate(QObject *parent);

    virtual void paintClock(QWidget *, QTime *) = 0;
};

#endif // CLOCKDELEGATE_H
#ifndef ANALOGCLOCKDELEGATE_H
#define ANALOGCLOCKDELEGATE_H

#include <QColor>
#include <QPoint>

#include "ClockDelegate.h"

class QWidget;

class AnalogClockDelegate : public ClockDelegate
{
    Q_OBJECT

public:

    explicit AnalogClockDelegate(QObject *parent);

    void paintClock(QWidget *, QTime *);

private:

    void setupClockHands();

    void drawClockSurface(QWidget *clockView, QTime *);

    void drawHourComponent(QWidget *clockView);

    void drawMinuteComponent(QWidget *clockView, QTime *);

    void drawSecondComponent(QWidget *clockView, QTime *);

    QPoint   m_center;
    QPoint   m_hourHand[3];
    QPoint   m_minuteHand[3];
    QPoint   m_secondHand[2];

    QColor   m_hourColor;
    QColor   m_minuteColor;
    QColor   m_secondColor;
    QColor   m_clockFaceColor;
};

#endif // ANALOGCLOCKDELEGATE_H
#如果没有
#定义一个代理
#包括
#包括
#包括“ClockDelegate.h”
类QWidget;
类AnalogClockDelegate:公共ClockDelegate
{
Q_对象
公众:
显式委托(QObject*父对象);
无效绘制时钟(QWidget*,QTime*);
私人:
无效设置时钟指针();
无效drawClockSurface(QWidget*clockView,QTime*);
作废drawHourComponent(QWidget*clockView);
无效drawMinuteComponent(QWidget*时钟视图,QTime*);
无效drawSecondComponent(QWidget*时钟视图,QTime*);
圣母大学中心;
Q点m_hourHand[3];
QPoint m_minuteHand[3];
QPoint m_二手[2];
QColor m_hourColor;
QColor m_minuteColor;
QColor m_secondColor;
QColor m_clockFaceColor;
};
#endif//analog clockdelegate\u H

假设ClockDelegate是一个QObject,我认为您缺少了“public”关键字。否则,您不是从QObject派生的,因此无法使用Q_OBJECT

class AnalogClockDelegate : public ClockDelegate

假设ClockDelegate是一个QObject,我认为您缺少了“public”关键字。否则,您不是从QObject派生的,因此无法使用Q_OBJECT

class AnalogClockDelegate : public ClockDelegate

这就是问题所在。为了消除这个错误,我花了一个小时,差点把头发扯下来。谢谢。另一种情况是,您派生的对象是在名称空间中定义的。您可能还需要编写名称空间<代码>公共ns1::ns2::myClass…我说得太快了。更正上述错误后,我知道会出现“未找到符号”错误。moc似乎不喜欢ClockDelegate或类似的ClockDelegate。我将编辑上面的内容。没关系,原来基类的构造函数缺少一个主体。谢谢,这就是问题所在。为了消除这个错误,我花了一个小时,差点把头发扯下来。谢谢。另一种情况是,您派生的对象是在名称空间中定义的。您可能还需要编写名称空间<代码>公共ns1::ns2::myClass…我说得太快了。更正上述错误后,我知道会出现“未找到符号”错误。moc似乎不喜欢ClockDelegate或类似的ClockDelegate。我将编辑上面的内容。没关系,原来基类的构造函数缺少一个主体。谢谢