首页 > 解决方案 > 声明要在类级别实例化的变量,并在类函数中使用

问题描述

假设我有这门课。我应该如何声明/实例化图像对象,以便我可以将它与所有函数一起使用,而无需将其作为参数传递?

view.h

class AAView : public QGraphicsView {

public:
    explicit AAView();
    QGraphicsScene* currentScene;
    QImage image;
};

view.cpp

AAView::AAView() {

    int sizeX = 1280;
    int sizeY = 720;

    image(sizeX, sizeY, QImage::Format_RGB32);
}

void AAView::drawPoint(int x, int y) {
    image.setPixel(x, y, qRgb(255, 255, 100));
}

我收到了这个错误:

error: no match for call to '(QImage) (int&, int&, QImage::Format)'
     image(sizeX, sizeY, QImage::Format_RGB32);

但是通过从标题中删除图像变量,这个错误就消失了。

标签: c++qt

解决方案


您似乎正在尝试调用QImage构造函数 for image,但这不是正确的语法。

您可以将其替换为构造函数中的以下行

image = QImage(sizeX, sizeY, QImage::Format_RGB32);

或者最好在成员初始化器列表中构造它

AAView::AAView() : image(1280, 720, QImage::Format_RGB32) {}

推荐阅读