0

我正在尝试创建一个大约 4 个 QDataStreams 的数组,每个 QByteArray 一个。
情况如下:

struct dataform{  
    //other members  
    QDataStream block;  
}  
dataform gd[4];  
//initialize data for each item in gd[]  
QDataStream out[4];  
for (int i = 0; i < 4; ++i){  
    out[i] = QDataStream(&gd[i].block, QIODevice::WriteOnly);  
}  

编译器返回

'QDataStream& QDataStream::operator=(const QDataStream&)' 是私有的

我也尝试过初始化

out[i](&gd[i].block, QIODevice::WriteOnly);  

无济于事;编译器返回

错误:不匹配调用 '(QDataStream) (QByteArray*, QIODevice::OpenModeFlag)'</p>

有什么方法可以做到这一点,还是我需要使数组成为 QDataStream 指针数组,动态分配 QDataStreams,并在我每次写入时(在整个程序中数百次)延迟流?

4

1 回答 1

2

您可以在不必使用指针的情况下执行此操作,但您需要QBuffer在结构中添加 s dataform

类似的东西(未测试):

struct dataform{  
    //other members  
    QBuffer buffer;
    QDataStream block;  
}  

dataform gd[4];  
QDataStream out[4];  
for (int i = 0; i < 4; ++i){  
    dg[i].buffer.setBuffer(&gd[i].block);
    dg[i].buffer.open(QIODevice::WriteOnly);  
    out[i].setDevice(&dg[i].buffer);
}  

(根据文档QDataStream,采用 a 的构造函数在内部QByteArray使用 a 。)QBuffer

于 2012-04-29T13:49:11.847 回答