Qt 与 vanilla c++ 中的变量范围

zaj*_*jer 0 c++ qt scope

免责声明:我是 Qt 的新手。

假设我们有一个从函数返回的字节数组innerFunc,稍后在另一个函数中使用outerFunc

QByteArray innerFunc(){
 QProcess ls;
 ls.start("ls", QStringList() << "-1");
 return ls.readAll();
}
void outerFunc(){
 QByteArray gotcha = innerFunc();
 .
 .
 .
}
Run Code Online (Sandbox Code Playgroud)

在 vanilla c++ 中,我希望readAll函数返回一个稍后需要删除的指针。在 Qt 中,这个函数返回该类的一个实例QByteArray,所以我想它不应该在innerFunc的范围之外访问。

如果是这样,我应该如何正确地将数据传输到外部函数?应该复制QByteArray *tmp = new QByteArray还是没有必要?

Dav*_*son 5

你的代码看起来不错。 QByteArray类似于std::vector<uint8_t>orstd::string而不类似于指针。它管理自己的内存。可以从函数返回它或按值将其传递给函数。编译器将使用 QByteArray 类定义的构造函数/运算符,根据需要将数据从一个对象复制和/或移动到另一个对象。