c++ - 帮助解决错误 : ISO C++ forbids declaration of 'vector' with no type

标签 c++ vector

如标题所述,我不确定为什么会收到此错误。我整理了一个类似于此结构的 test.cpp,它工作正常。此外,除了 vector 问题之外,还有另一个关于“ protected ”的问题,它甚至不在代码中。我认为“ protected ”是一个宏,所以不知道那里有什么。我是 QT 的新手,所以我很可能“做错了”。这当然是编译器的建议。

In file included from DrvCrystalfontz.cpp:8:
LCDText.h:28: error: ISO C++ forbids declaration of 'vector' with no type
LCDText.h:28: error: expected ';' before '<' token
LCDText.h:30: error: ISO C++ forbids declaration of 'vector' with no type
LCDText.h:30: error: expected ',' or '...' before '<' token
LCDText.h:46: error: expected ':' before 'protected'
LCDText.h: In constructor 'LCDText::LCDText(int, int, int, int, int, int, int, QObject*)':
LCDText.h:33: error: expected '{' at end of input
scons: *** [DrvCrystalfontz.o] Error 1
scons: building terminated because of errors.

这是代码。我对错误中指出的行进行了编号。

#ifndef __LCD_TEXT__
#define __LCD_TEXT__

#include <vector>
#include <QObject>

#include "LCDBase.h"
#include "WidgetText.h"
#include "WidgetBar.h"
#include "WidgetHistogram.h"
#include "WidgetIcon.h"
#include "WidgetBignums.h"
#include "WidgetGif.h"

class LCDText: public LCDBase, public virtual QObject {
    Q_OBJECT
    protected:
        char *LayoutFB;
        char *DisplayFB;
        int GOTO_COST;
        int CHARS;
        int CHAR0;
        int LROWS;
        int LCOLS;
        int DROWS;
        int DCOLS;
        vector<vector<char *> > chars; // Line 28
        void (*TextRealWrite) (const int row, const int col, const char *data, const int len);
        void (*TextRealDefchar) (const int ascii, const vector<char *> matrix); // Line 30
    public:
        LCDText(int rows, int cols, int xres, int yres, int _goto, int chars,
            int char0, QObject *parent) : LCDBase(xres, yres), QObject(parent); // Line 33
        ~LCDText();
        void TextInit(int rows, int cols);
        void TextBlit(int row, int col, int  height, int width);
        void TextClear();
        void TextClearChars();
        void TextGreet();
        void TextDraw(WidgetText widget);
        void TextBarDraw(WidgetBar widget);
        void TextHistogramDraw(WidgetHistogram widget);
        void TextIconDraw(WidgetIcon widget);
        void TextBignumsDraw(WidgetBignums widget);
        void TextGifDraw(WidgetGif widget);
     public signals: // Line 46
         void SpecialCharChanged(int ch);
     public slots:
         void TextSpecialCharChanged(int ch);
};

#endif

最佳答案

Vector 位于 std 命名空间中。您必须执行以下操作之一:

在类型前加上命名空间:

std::vector<std::vector<char *> > chars;

告诉编译器你正在使用来自 std 命名空间的 vector

using std::vector;
vector<vector<char *> > chars;

或者,告诉编译器你正在使用 std 命名空间,它会把所有东西都带进来(不推荐,看评论)

using namespace std;

关于c++ - 帮助解决错误 : ISO C++ forbids declaration of 'vector' with no type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1552170/

相关文章:

c++ - 从巨大的 txt 中读取二维矩阵

C++:使用 fstream 修补二进制文件

c++ - 自定义QGraphicsPixmapItem不显示像素图

C++ vector 未正确填充

.net - XNA - 为什么它使用 Vector2 而不是 Point?

c++ - 如何打印出文件的内容? C++ 文件流

c++ - 如何在 QT 中使用互斥锁定线程开始轮询?

c++ - 用户定义类的构造函数不适用于 vector

c++ - std::find on map 无法正常运行并遍历 map 的键和值

c++ - 当迭代器的 vector 被添加到时,如何保持迭代器可取消引用?