Sono nuovo della programmazione in c. Vorrei porvi un interrogativo su un costrutto che non riesco a comprendere:

codice:
BBCastData::BBCastData(char* buf) : AppData(BBCAST_DATA) {

x_ = ((hdr_bbcast*)buf)->x_;
y_ = ((hdr_bbcast*)buf)->y_;
fmd_ = ((hdr_bbcast*)buf)->fmd_;
bmd_ = ((hdr_bbcast*)buf)->bmd_;

}
A quanto ho capito dovrebbe essere la definizione di un metodo appartenente alla classe BBCastData.
In particolare non capisco:

- cosa significhino i ":" all'inizio.
- che ruolo abbiano le parentesi (esempio: ((hdr_bbcast*)buf))

Grazie spero in chiarimenti.