变量未在此范围内声明

时间:2014-10-19 18:40:31

标签: c++ variables vector

这是我的一段代码

#include <stdio.h>
#include "W.h"
#include <QtGui/QApplication>
#include <QtGui/QPushButton>
#include <QtGui/QFont>
#include <QtGui/QWidget>
#include <QtGui/QLabel>
#include <QtGui/QImage>
#include <QtGui/QPainter>
#include <opencv/highgui.h>
#include <opencv/cv.h>
#include <opencv/cxcore.h>
#include <QTimer>
#include <QImage>
#include <string>
#include <vector>


void PainterWidget::paintEvent(QPaintEvent* event) {
        vector <const char*> p;
        p.push_back("01.jpg");
        p.push_back("02.jpg");
        p.push_back("03.jpg");
        p.push_back("04.jpg");
        p.push_back("05.jpg");
        counter=counter%5;
        QImage img= QImage(p[counter]);
        QPainter painter(this);
        painter.drawImage(0,0,img);
        counter++
        p.clear();

}

我收到错误&#34;错误:&#39; vector&#39;未在此范围内宣布&#34; 我无法理解,我已经包含了矢量库,为什么错误仍然出现?

谢谢大家的帮助!

2 个答案:

答案 0 :(得分:3)

添加:

using namespace std;

vector

前缀std::

顺便说一句,您可以通过仅创建和填充向量一次来优化代码。每次油漆事件都没有意义。此外,完成后无需明确清除矢量,它的析构函数(在您的情况下自动调用)就可以完成。

static std::vector<std::string>& images()
{
    static std::vector<std::string> imagesVect;
    if ( imagesVect.empty() )
    {
        imagesVect.push_back("01.jpg");
        imagesVect.push_back("02.jpg");
        imagesVect.push_back("03.jpg");
        imagesVect.push_back("04.jpg");
        imagesVect.push_back("05.jpg");
    }
    return imagesVect;
}

void PainterWidget::paintEvent(QPaintEvent* event) {
        counter=counter%5;
        QImage img= QImage(images().[counter].c_str());
        QPainter painter(this);
        painter.drawImage(0,0,img);
        counter++;    
}

答案 1 :(得分:1)

使用

std::vector<const char *>

使用在名称空间std ..

中声明的类向量的限定名称