Dalam kode C++ saya, saya harus menggunakan fungsi perpustakaan eksternal yang memiliki argumen vector<uint8_t>.

Tetapi di source saya, saya menyimpan variabel saya sebagai vector , jadi bagaimana saya melakukan percakapan dari vector<byte> ke vector<unint8_t> sementara variabel diteruskan ke fungsi.

Sumber saya diberikan di bawah ini.

// fungsi perpustakaan eksternal dari header:

uint16_t  GetLinkCRC16(const vector<uint8_t> &buffer);


vector<byte> m_Seq;

//memanggil cpp saya:

vector<byte> writeBytes(m_Seq);
GetLinkCRC16(writeBytes);

Saya memiliki kesalahan ketik percakapan ketika saya meneruskan "writeBytes" ke metode "GetLinkCRC16".

1
Raj 5 Agustus 2019, 15:56

1 menjawab

Jawaban Terbaik

Sayangnya, tidak ada cara untuk membuat vektor dengan tipe yang berbeda tanpa membuat salinan (dan konversi tipe).

std::vector<byte> writeBytes(m_Seq);

std::vector<uint8_t> writeBytesClone(writeBytes.begin(), writeBytes.end());
GetLinkCRC16(writeBytesClone);

Apa yang saya maksud dengan mengatakan "tidak mungkin". Ada cara, tetapi ini adalah bergantung pada platform dan, mungkin, cara UB untuk membungkus array dalam vektor.

0
mr NAE 19 November 2019, 09:36