Differences between Qt cast and normal cast (and some questions about it)
Solved
General and Desktop
-
Hi
I want to know the differences between the cast likestatic_cast
and(type)param
e.g. some protocols' API will need `uint8_t*` param: `bool writedata(uint8_t* data);` but the data type from qt `QByteArray` is `char*`
some blogs say that it's unsafe to use
reinterpret_cast
. Could you tell me how to use these casts?I can't find the information about this in wikiRegards
Mihan -
Hi @Mihan,
the absolutely clean way is indeed to have a
uint8_t buffer[]
and tomemcpy
theQByteArray
contents to it.But if your API takes a
const uint8_t *data
pointer, I'd indeed go withreinterpret_cast
:QByteArray ba = "..."; const uint8_t *data = reinterpret_cast<const uint8_t *>(ba.constData());
Note that functions non-const parameters (
uint8_t *data
) might modify the data, which can lead to unexpected side effects of any kind when they operate on the byte array data.Regards
Regards
-
Hi,
Out of curiosity, what Qt cast do you have in mind ? Is see only C/C++ cast in your post.