के साथ 'वेक्टर' की घोषणा को रोकता है शीर्षक के अनुसार, मुझे यकीन नहीं है कि मुझे यह त्रुटि क्यों मिल रही है। मैंने एक test.cpp को एक साथ रखा है जो इस संरचना के समान है, और यह ठीक काम करता है। इसके अलावा, वेक्टर समस्या के अलावा, 'संरक्षित' के बारे में दूसरी समस्या है, जो कोड में भी नहीं है। मुझे लगता है कि 'संरक्षित' एक मैक्रो है, इसलिए कोई बात नहीं है कि वहां क्या है। मैं क्यूटी के लिए नया हूं, इसलिए मुझे लगता है कि "यह गलत कर रहा है।" निश्चित रूप से संकलक का सुझाव क्या है।त्रुटि के साथ सहायता: आईएसओ सी ++ किसी भी प्रकार
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
कृपया, मानवता के प्यार के लिए, न कि "नाम स्थान XXX का उपयोग करके" है एक हेडर फाइल में। आप हर दूसरे प्रोग्रामर को रोएंगे जो रोते हैं। –
सहमत हैं, लेकिन आप लोगों को विकल्पों को भी बता सकते हैं;) – MichaelM
वैसे तो इस विकल्प को शामिल करें: std :: vector का उपयोग करके; मैं इसे शामिल करने के तुरंत बाद .cpp में पसंद करता हूं। Std :: सभी जगह * और * दस्तावेज़ों को बांधने से बचाता है क्यों हेडर शामिल किया गया था (जो वेक्टर के मामले में हमेशा स्पष्ट नहीं है)। –