类未在范围中声明-即使包含.h

用户名

我是C ++的新手,但遇到了一个奇怪的问题,

我收到“未在此范围内声明ToDoItem”,但我包含了todoitem.h文件

错误是在此类定义中:

#ifndef ITEMMONITOR_H
#define ITEMMONITOR_H

#include <QObject>
#include <QPointer>
#include <QTimer>
#include "todoitem.h"

class ItemMonitor : public QObject{
    Q_OBJECT

    signals:
        void finished();

    public:
        explicit ItemMonitor(std::vector< QPointer<ToDoItem> >&  items_);

    private:
        std::vector< QPointer<ToDoItem> >& items;
        bool shouldRun;

    public slots:
        void beginMonitoring();
        void finishUp();
};

#endif // ITEMMONITOR_H

和todoitem.h是:

#ifndef TODOITEM_H
#define TODOITEM_H


#include <string>
#include <QString>
#include <QPushButton>
#include <QFrame>
#include <QDateTime>
#include "todolist.h"


namespace Ui {
    class ToDoItem;
}

class ToDoItem : public QFrame{
    Q_OBJECT

    public:
        //constructor and destructor
        explicit ToDoItem(QFrame *parent = 0);
        ~ToDoItem();

        //functions
        void setValues(QString mainText_,          // sets all import
                   QString additionalText_,
                   QDateTime dateTime_,
                   bool hasDeadline_);
        void paintEvent(QPaintEvent *pe);          //added to support stylesheets
        void setDeadline(QDateTime deadline_);
        QDateTime getDeadline();
        bool getHasDeadline();
        void setId(int id_);
        int getId();
        void setSecsTillDeadline();
        int getSecsTillDeadline();
        bool getSorted();
        void setSorted(bool sorted_);
        QString getMainText();
    private:
        QString formatTime(int duration_);
        Ui::ToDoItem *ui;
        int id;
        QDateTime deadline;
        bool hasDeadline;
        int secsTillDeadline;
        bool sorted;                               // set to true only during the sorting process
};

#endif // TODOITEM_H
JSF

常见的通告包含问题发生于:

#ifndef A_H
#define A_H
#include "b.h"
// do something requiring content from b.h
#endif  

h

#ifndef B_H
#define B_H
#include "a.h"
// whatever
#endif  

如果某些cpp包含“ ah”,则您可能会忽略它(如果bh确实不需要ah)。但是,如果该cpp包含bh,则bh include ah,然后才声明ah所需的东西。然后ah尝试包含bh,但是include保护块阻止了该操作,因此编译器将处理ah而没有bh的声明,并且会失败。

常见的问题通常被另一层掩盖,例如您的示例:todoitem.h包含“ todolist.h”,即使它并不是真的需要它,然后“ todolist.h”包含“ intemmonitor.h”需要“ todoitem.h”,但由于包含保护而未能包含它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

即使在包含 <time.h> 之后,“'CLOCK_PER_SEC' 未在此范围内声明”错误

即使make.file中包含了math.h也不会被包含

为什么即使都包含“ foo.h”和“ bar.h”,我也需要转发声明类foo而不是类bar的声明?

即使包含“ string.h”,隐式声明strlcpy和strlcat

即使在OSX 10.8.5中包含OpenGL / gl3.h之后,也使用未声明的标识符'glGenVertexArrays'错误

即使在Ubuntu 20.04,编译器gcc 9.3.0中包含string.h之后,也无法使用strrev()函数。我能做些什么?

stdio.h 包含函数的定义或声明?

来自包含文件的 Typdef '未在此范围内声明'

Beautifulsoup - 从包含 h4 的特定类中抓取

标签h4包含在div类中

为什么即使包含头文件,我也会在此范围内得到未声明错误?

未定义的对web :: json :: value :: object的引用,即使包含json.h

itoa () 不适用于 32 位 tdm-gcc 5.1,即使包含 stdlib.h

包含转写的指令不使用指令范围,即使明确告知

错误:包含 <Kinect.h> 时未声明“_Out_”

即使在包含保护中定义了函数的多个定义

即使包含DLL的目录在路径中也缺少DLL

即使不包含在C中,功能也可见

选择始终返回:id,即使呼叫中未包含它

当包含<linux / time.h>时,“ getnstimeofday”是系统调用中的隐式声明

即使存在头文件,也未在此范围内声明函数

即使在类路径中包含了jar文件,也无法在运行时找到类

未在范围错误中声明

即使在类路径中正确包含了包含该类的jar,也会发生ClassNotFoundException

为什么即使使用#ifndef HEADER_H也不能在头文件中声明和分配全局变量

#include .h和仅声明A类之间的区别;在C ++中

即使包含math.h标头,为什么也会出现“对sqrt的未定义引用”错误?

即使在清单类路径中包含了JAR,也不会出现NoClassDefFoundError

C ++:为什么在包含标头时出现“未在此范围内声明”错误?