Supponiamo che ci sia una funzione con un valore di default:Come gestire i valori di default nelle chiamate di funzione (profondamente) nidificate?
int foo(int x=42);
Se questo è chiamato da altri in questo modo:
int bar(int x=42) { return foo(x); }
int moo(int x=42) { return bar(x); }
Questo è naturalmente solo un esempio forzato. Tuttavia, a volte ho una situazione abbastanza simile. Il parametro viene passato dal livello più alto (moo
) al valore più basso e solo lì viene effettivamente utilizzato. La cosa brutta è che quando cambio foo
con un valore predefinito diverso da 42
, dovrei cercare tutti i chiamanti e modificare di conseguenza il valore predefinito.
C'è qualche schema/linguaggio per evitare questa situazione?
L'unica soluzione semplice che mi viene in mente è
int bar() { return foo(); }
int bar(int x) { return foo(x); }
Tuttavia, come io sono un po 'pigro e nel codice reale questo porterebbe a un po' di duplicazione del codice, vorrei evitare questo.
Direi che non dovresti utilizzare il valore predefinito del parametro per i valori predefiniti arbitrari. Per quelli vorrei usare variabili const con namespace. I valori predefiniti dei parametri sono validi per cose come i valori di inizializzazione * sane * (zero/nullptr/false). – Galik