Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 答复未在此范围内声明_C++_Scope - Fatal编程技术网

C++ 答复未在此范围内声明

C++ 答复未在此范围内声明,c++,scope,C++,Scope,为什么这个代码不起作用 void MainWindow::on_startButton_clicked() { QNetworkAccessManager *nam = new QNetworkAccessManager(this); QNetworkReply *red = nam->get(QNetworkRequest(QUrl("someurl/to/file"))); QObject::connect(red, SIGNAL(readyRead()), t

为什么这个代码不起作用

void MainWindow::on_startButton_clicked()
{
    QNetworkAccessManager *nam = new QNetworkAccessManager(this);
    QNetworkReply *red = nam->get(QNetworkRequest(QUrl("someurl/to/file")));
    QObject::connect(red, SIGNAL(readyRead()), this, SLOT(readingReadyBytes()));
    QObject::connect(red, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(updateDownloadProgress(qint64,qint64)));
}

void MainWindow::readingReadyBytes() {
    QFile file("C:\\test.bin");
    file.open(QIODevice::WriteOnly);
    file.write(red->read(red->bytesAvailable()));
    file.close();
}
QT抛出错误:此范围中未声明“red” write(红色->读取(红色->字节可用());
^

您应该声明
红色
为类成员,而不是在
void main window::on_startButton_clicked
函数中,然后您可以在
on_startButton_clicked
函数中为其赋值,因此:

声明
红色
为类成员:

// in your MainWindow class
QNetworkReply *red;
在单击的开始按钮上的
方法中为其赋值:

...
red = nam->get(QNetworkRequest(QUrl("someurl/to/file")));
...

因为
红色
是单击的启动按钮()上的
本地。
如果您试图下载并保存文件,则在创建文件并在每次调用
readingReadyBytes()
时关闭文件时,代码将无法工作。 根据ABFORCE的建议,您应该宣布
红色
为会员。
然后,您应该将
QNetworkReply
的事件
finished()
连接到关闭文件的插槽。

可能是因为
red
不是MainWindow的一个属性,也不是全局可访问的变量。@Kamil Klimek无需粗鲁。我有C++基础知识,但我对对象和类很陌生。我不是粗鲁的。我要指出的是,你缺乏基本的C++知识范围。