lvalue требуется как одинарный '& amp;' операнд при поиске смещения структурной переменной внутри другой структуры

Используется std::vector<>, потому что std::vector<> обычно выделяет больше памяти, чем objects в vector<>.

0
задан Shubham Yadav 16 January 2019 в 22:54
поделиться

1 ответ

& можно использовать только для переменных (включая элементы массива или члены структуры) - более формально называемые lvalues ​​. По сути, вы можете использовать его на всем, что может быть на левой стороне = (именно так lvalues ​​получили свое имя). Вы не можете сделать, например, &(1 + 1). Вы также не можете сделать &(&some_variable) по той же причине: &some_variable не является lvalue.

Легко видеть, что это не lvalues, как нельзя было сделать 1 + 1 = something; или &some_variable = something;.

У вас есть &((struct c*)(&((struct a*)0)->y)->j). Или упрощенно, &(&(something)). Это недействительно Я не знаю, что пытается сделать функция, но, возможно, вы использовали две & вместо одной по простой ошибке.

0
ответ дан immibis 16 January 2019 в 22:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: