Здравствуйте, Аноним, Вы писали:
А>vector<BYTE> buff;
А>unsigned short cmdNum = reinterpret_cast<unsigned short &>(*(&buff[10]));
А>Что в этой строке делается, зачем такие сложности *& — они же отменяют друг друга? Спасибо
Тоже не ясно, получение значения с последущим взятием адреса элемента, чтобы потом получить значение опять, а потом преобразование которое и так произойдет неявно, да еще и в ссылку, то что здесь нет смысла делать.
Может чтобы никто не догадался что этот код делает ?
Можно проще :
vector<BYTE> buff;
//...unsigned short cmdNum = buff[10];
Здравствуйте, Аноним, Вы писали:
А>vector<BYTE> buff;
А>unsigned short cmdNum = reinterpret_cast<unsigned short &>(*(&buff[10]));
А>Что в этой строке делается, зачем такие сложности *& — они же отменяют друг друга? Спасибо
Замени *(&buff[10]) на buff[10]
и тогда вроде понятнее будет
reinterpret_cast<unsigned short &>(buff[10])
Of course, the code must be complete enough to compile and link.
vector[10] возвращает объект allocator::reference (или
allocator::const_reference), который (вообще говоря) может
переопределять оператор & для получения указателя на элемент.
wrote:
> vector<BYTE> buff; > > unsigned short cmdNum = reinterpret_cast<unsigned short > &>(*(&buff[10])); > > Что в этой строке делается, зачем такие сложности *& — они же > отменяют друг друга? Спасибо
__>Возможно это то что хотелось, но в примере будет только 1 байт как я понимаю.
__>buff[10] — unsigned char& __>&buff[10] — unsigned char* __>*(&buff[10]) — unsigned char&
Здравствуйте, Анатолий Широков, Вы писали:
__>>Возможно это то что хотелось, но в примере будет только 1 байт как я понимаю.
__>>buff[10] — unsigned char& __>>&buff[10] — unsigned char* __>>*(&buff[10]) — unsigned char&
Да точно, там ссылка, а не значение.