Direi che basta limitare al minimo l'ambito; con quello, fai ciò che è più pulito.
Se lo si utilizza per una funzione, tenerlo nell'ambito di questa funzione. Se lo usi per diverse funzioni, rendilo un typedef privato. E se ti aspetti che altri lo usino (forse fuori servizio, forse), rendilo pubblico.
in codice:
namespace detail
{
// By convention, you aren't suppose to use things from
// this namespace, so this is effectively private to me.
typedef int* my_private_type;
}
void some_func()
{
// I am allowed to go inside detail:
detail::my_private_type x = 0;
/* ... */
}
void some_other_func()
{
// I only need the typedef for this function,
// so I put it at this scope:
typedef really::long::type<int>::why_so_long short_type;
short_type x;
/* ... */
}
typedef int integer_type; // intended for public use, not hidden
integer_type more_func()
{
return 5;
}
class some_class
{
public:
// public, intended for client use
typedef std::vector<int> int_vector;
int_vector get_vec() const;
private:
// private, only for use in this class
typedef int* int_ptr;
};
Speriamo che ti dà un'idea di quello che voglio dire.
Immagino di non capire perché lo stiate chiedendo. Hai sentito qualcosa? –
haha, eh? È da una canzone? – SirYakalot
Nel tuo esempio non c'è typedef ... – interjay