Supponiamo di avere una funzione che restituisce un risultato importante e diversi risultati non importanti. Ho dichiarato in modo che i risultati non importanti vengono restituiti con riferimento:Ignorare un risultato di ritorno per riferimento di una funzione
int CalculateStuff(int param1, int param2, int& result1, int& result2);
Vorrei chiamare questa funzione per calcolare alcune cose, ma al sito di chiamata voglio ignorare i risultati poco importanti. Ho potuto fare come segue:
...
int dummy1, dummy2;
int result = CalculateStuff(100, 42, dummy1, dummy2);
... // do something with the result
desidero considerare un altro modo per fare la stessa senza dichiarare variabili dummy:
int result = CalculateStuff(100, 42, *new int, *new int);
Questo ha una perdita di memoria (inaccettabile), ma ha un vantaggio di mostrare il mio intento (ignorando i risultati) più chiaramente dei nomi "fittizi".
Allora, che cosa accadrebbe se ho scritto come segue:
int result = CalculateStuff(100, 42, auto_ptr(new int).get(), auto_ptr(new int).get());
E 'legale? Gli interi temporanei esistono ancora quando viene eseguito il codice della funzione? Dovrei usare unique_ptr
invece di auto_ptr
?
(Si prega di non suggeriscono refactoring il mio codice, io probabilmente - ma prima voglio capire come funziona questa roba)
Aggiunto come commento in quanto in realtà non risponde alla tua domanda - ma di solito dichiaro un messaggio temporaneo chiamato _ e passa che se questo viene fuori. "CalculateStuff (100, 42, _, _); sembra ragionevolmente chiaro – jcoder