Khi trạng thái tiêu đề, tôi không chắc chắn lý do tại sao tôi nhận được lỗi này. Tôi đã đặt cùng một test.cpp tương tự như cấu trúc này, và nó hoạt động tốt. Ngoài ra, ngoài vấn đề vectơ, còn có vấn đề khác về 'được bảo vệ', mà thậm chí không có trong mã. Tôi nghĩ rằng 'bảo vệ' là một vĩ mô, vì vậy không nói gì ở đó. Tôi mới sử dụng QT, vì vậy tôi có thể "làm sai". Đó chắc chắn là những gì trình biên dịch đề xuất.Trợ giúp với lỗi: ISO C++ cấm tuyên bố 'vector' không có loại
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.
Đây là mã. Tôi đã đánh số các dòng được ghi trong lỗi.
#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
Xin vui lòng, vì tình yêu nhân loại, đừng "sử dụng không gian tên XXX" trong tệp tiêu đề. Bạn sẽ làm cho mọi lập trình viên khác bắt gặp nó khóc. –
Đồng ý, nhưng bạn cũng có thể nói cho mọi người biết các tùy chọn;) – MichaelM
Sau đó, bao gồm tùy chọn này: using std :: vector; Tôi thích nó trong .cpp ngay lập tức sau khi bao gồm. Tiết kiệm ràng buộc std :: trên tất cả các vị trí * và * tài liệu tại sao tiêu đề được bao gồm (không phải lúc nào cũng rõ ràng như trong trường hợp của vectơ). –