Se scrivi

Cronometro Crono;
Crono.Start();

va bene ma se scrivi

Cronometro *Crono;
Crono->Start();

commetti un errore (grave ma classico di chi sta imparando ...) perche' il puntatore non e' *inizializzato* ...

Cioe', prima di chiamare il metodo, ti devi assicurare che il puntatore *punti effettivamente* ad un oggetto che *esiste* ...

Il codice corretto, dovrebbe essere

Cronometro *Crono;
Crono = new Cronometro();
Crono->Start();

In piu', alla fine dell'utilizzo dell'oggetto, dovresti usare la

delete Crono;

per chiamare il distruttore, che nell'altro caso, sarebbe chiamato automaticamente quando l'oggetto esce dallo scope.

Nel caso di

IrrlichtDevice *device = CreateDevice(...);

non tieni in considerazione il fatto che la funzione CreateDevice, sicuramente, restituisce un "puntatore ad oggetto IrrlichtDevice" e quindi, dall'altra parte, ci deve essere un puntatore a tale oggetto.