Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.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
QTextStream(*QFile)构造函数已删除 一般来说我对C++非常陌生,对Qt也很陌生,因此我有个问题:_C++_Qt - Fatal编程技术网

QTextStream(*QFile)构造函数已删除 一般来说我对C++非常陌生,对Qt也很陌生,因此我有个问题:

QTextStream(*QFile)构造函数已删除 一般来说我对C++非常陌生,对Qt也很陌生,因此我有个问题:,c++,qt,C++,Qt,我有这个密码: if(!logFile.open(QIODevice::ReadOnly)) { QMessageBox::information(0, "error", logFile.errorString()); } else { QTextStream result(&logFile); return result.readAll(); } 它运转良好。 但是,当我尝试返回QTextStream对象而不是QString w/我从文件中读取的所有文本时,会

我有这个密码:

if(!logFile.open(QIODevice::ReadOnly)) {
    QMessageBox::information(0, "error", logFile.errorString());
}
else {
    QTextStream result(&logFile);
    return result.readAll();
}
它运转良好。 但是,当我尝试返回QTextStream对象而不是QString w/我从文件中读取的所有文本时,会弹出以下错误:

/home/neko/projects/WurmLogparser/wurmlog.cpp:208: error: call to deleted constructor of 'QTextStream'
        return result;
               ^~~~~~
对导致错误的原因进行编码,如下所示:

else {
    QTextStream result(&logFile);
    return result;
    //return result.readAll();
}
当然,在尝试编译第二个版本之前,我会适当地将相关类型更改为QTextStream。请告诉我第二版代码有什么问题?我以与第一部分相同的方式构造QTextStream,但它会产生奇怪的错误

TextStream对象[…]包含所有文本

流不“包含”任何文本。它是从
QIODevice
检索文本的一种方法,但它本身并不包含文本

在您的情况下,返回字符串是正确的做法

QTextStream
不可复制。您不能按值返回它。在大多数情况下,返回这样的对象是没有意义的。如果在流上操作,则应将其作为引用参数传递:

void myFunction(QTextStream & stream) { ... }
如果希望返回从文件读取的内容,可以将其作为字符串(如您所做)或原始二进制数据返回:

QByteArray myFunction() {
  ...
  return logFile.readAll();
}
然后可以在字节数组上使用流:

void foo() {
  auto data = myFunction();
  auto stream = QTextStream(&data);
  // use the stream
  ...
}

为了进一步澄清,QTextStream的复制构造函数(以及=运算符)都是私有的,这就是您无法复制它们的原因:o

库巴(+1:)很好地解释了四处走动的方法