2012-04-29 54 views
0

我想創建一個大約4個QDataStreams的數組,我爲每個QByteArray創建一個。
的情況如下:如何基於QByteArrays創建一個QDataStreams數組

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&)’ is private

我也試圖與

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

無濟於事初始化出來;編譯器返回

error: no match for call to ‘(QDataStream) (QByteArray*, QIODevice::OpenModeFlag)’

有沒有辦法做到這一點還是做我需要做陣列QDataStream指針數組,動態分配QDataStreams,每(幾百倍尊重流在整個程序)我寫信給它?

回答

2

您可以在不使用指針的情況下執行此操作,但需要在dataform結構中添加QBuffer s。

喜歡的東西(未測試):

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構造函數,一個QByteArray內部使用一個QBuffer根據文檔)

+0

謝謝,這個作品。我結束了把緩衝區數組放在我聲明數據流的地方,但同樣的事情。 – QuantumRipple 2012-04-29 21:34:15

相關問題