Не считывайте char * в этом случае как единственный допустимый тип данных.
Многие * ix API используют char в качестве общего указателя буфера.
Посмотрите на интерфейс как указатель на буфер и размер буфера.
Этим буфером может быть все, что угодно, от единственного целого, до структуры, разделенного на строки представления вашего класса, или просто что-нибудь еще в памяти.
int i;
mq_send(mq, (char *) &i, sizeof(i), 0);
Должен работать (не проверено)
Удачи