Help with error: ISO C++ forbids declaration of 'vector' with no type

c++, vector

Solution

Vector resides in the std namespace. You have to do one of the following:

Prepend the type with the namespace:

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

Tell the compiler you are using vector from the std namespace

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

Or, tell the compiler you are using the std namespace, which will bring in everything (not recommended, see comments)

using namespace std;

Problem

As the title states, I'm not sure why I'm getting this error. I've put together a test.cpp that's similar to this structure, and it works fine. Also, other than the vector problem, there's the other problem about 'protected', which isn't even in the code. I think 'protected' is a macro, so no telling what's there. I'm new to QT, so I'm likely "doing it wrong." That's certainly what the compiler's suggesting. ``` 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. ``` Here's the code. I've numbered the lines noted in the error. ``` #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 ```

Original source