У меня есть набор указателей на объекты блока изображения. У меня есть функция-член производного класса, которая возвращает указатель на один из этих блоков изображения, это виртуальная функция, поэтому я не могу изменить тип возврата, не нарушая все.Назначение указателя на массив указателей
Вот то, что я до сих пор:
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'. –