Diciamo che ho uno spazio dei nomi my
e questo spazio dei nomi contiene una classe foo
.
Che cosa preferirei annidare typedef nella mia classe o tenerlo nel mio spazio dei nomi?
namespace my {
class foo {
// some stuff
// nested one
typedef bar my_foo_bar;
};
// or namespaced one
typedef bar my_foo_bar;
}
Guardando le std-libs la maggior parte delle cose è la variante namespace.
(forse un brutto esempio ma ...) istream non è nidificato in iostream (a questo punto intendo solo il modo di usare - > std :: fstream, std :: istream, ...), quindi io può usarlo direttamente ma anche la lista delle possibili funzioni è abbastanza grande in std ::
Potrei fare entrambe le cose. La prima variante è più incapsulata ma anche se devo ereditarmi molto devo digitare molto (my :: foo :: inh :: and :: so :: on) se non userò using [namespace]
.
Per prima cosa ho pensato che la variante annidata è più bella a causa dell'incapsulamento di ciò che voglio avere nello stesso "gruppo". Potrei anche creare un nuovo spazio dei nomi all'interno del mio, ma poi devo anche digitare ogni volta il nuovo spazio dei nomi (anche senza usare [namespace]).