我有一組指針指向圖像塊對象。我有一個派生類成員函數返回一個指向這些圖像塊的指針,它是一個虛函數,所以我不能改變返回類型而不會破壞所有內容。將指針分配到指針數組中
這是我到目前爲止有:
ImageBlock* objArray = static_cast<ImageBlock*>(::operator new (sizeof ImageBlock * 256));
for (int i = 0; i < 256; i++)
new (&objArray[i]) ImageBlock(blkh, blkw, 0.0);
for (int i = 0; i < 16; i++) {
for (int j = 0; j < 16; j++) {
ImageBlock* temp = getNewBlock(i, j, Image); // getBlock returns ImageBlock*
objArray[i*16 + j] = *temp;
delete temp;
}
}
正如你可以看到這是一個可怕的解決方案。我想直接使用一些指針運算,像這樣來分配指針:
for (int i = 0; i < 16; i++) {
for (int j = 0; j < 16; j++) {
(objArray+(i*16 + j)) = getNewBlock(i, j, Image);
}
}
但是我得到的錯誤expression must be a modifiable lvalue
與objArray
紅色下劃線。我知道它會在從數組中取指針的其他方法中工作。我已經搜索了這個錯誤,並且繼續看到「不能分配給數組」這樣的事情,它不是傳統意義上的數組嗎?我有幾個想法,爲什麼它不會工作,但我想知道肯定。如果任何人都可以提供一個更有趣的解決方案。
感謝
'Ivalue',你的意思是'lvalue'。 – 2014-01-26 00:27:00