Ah, ya entiendo, tienes rattle declarado como cadena anteriormente no? Es que en el codigo que has puesto no se ve bueno supongo que será así. De todos modos lo de hacerlo con punteros me parece un poco extraño, nose cada programador piensa como quiere, ahora bien recuerda inicializar los punteros.
Así el compilador entiende que ese puntero no apunta a ninguna parte, si los declaras sinn inicializar, estos punteros pueden apuntar a cualquier lado, cosa que no es muy recomendable.