Yo tengo entendido que para escribir archivos en binario se se utiliza write(const char*,int n);
w.write(reinterpret_cast<const char*>(num),sizeof(int));
Con esa instruccion le estoy diciendo que interprete a num como un const char*, no que lo convierta a un puntero.
Edit:joder me falta el &num
Gracias