У меня есть const vector<uint8_t>>
, и мне нужно передать его функции, которая принимает const unsigned char*
. Эти два типа имеют одинаковый размер и т. Д., Поэтому я предполагаю, что здесь есть хороший способ принуждения типов. Каков идиоматический способ решения этой проблемы?Как преобразовать вектор <uint8_t> в unsigned char *
Моим первым инстинктом является использование reinterpret_cast, но после отливки данные не совпадают. Вот мой код:
shared_ptr<const vector<uint8_t>> data = operation.getData();
const unsigned char* data2 = reinterpret_cast<const unsigned char*>(&data);
myFunction(data2, data->size());
Скорее всего, я спутал указатель на значение здесь, но, возможно, весь мой подход неверен.
Вернее: 'data-> data()' –
'vector :: data()' возвращает указатель на фактические данные внутри вектора. –
@BenjaminLindley, Почему? Зачем? Я должен сойти с ума. Как на самом деле 'operator->' не приходило в голову? – chris