¿Debería declarar enumeraciones dentro o fuera de una clase si dichas enumeraciones solo se usan en las funciones de miembros de la clase?¿Deberías declarar enumeraciones dentro o fuera de una clase?
namespace nspace
{
// need to append OC, as this pollutes the current namespace
enum OUTSIDE_CLASS {OC_POINTS, OC_LINES, OC_LINE_LOOP, :::};
enum OTHER_ENUM {OE_POINTS};
class VertexBuffer
{
public:
enum INSIDE_CLASS {POINTS, LINES, LINE_LOOP, :::};
void foo(OUTSIDE_CLASS e);
void bar(INSIDE_CLASS e);
}
};
// usage
nspace::VertexBuffer v;
v.foo(nspae::VB_POINTS);
v.bar(nspace::VertexBuffer::POINTS); // more pedantic
Al igual que con todas las preguntas [de estilo de codificación], la respuesta es "depende". –
Alguien podría tener un poco más de conocimiento sobre esto que yo, pero mi estrategia siempre ha sido no exponer algo hasta que deba ser expuesto. (En otras palabras, si solo se usa internamente, guárdela interna.) – Corbin
Como es habitual con las preguntas sobre el estilo de codificación, no hay una respuesta definitiva.Contaminar el alcance global generalmente no es una buena idea debido al riesgo de declaraciones conflictivas, pero si se está dentro de su "propio" espacio de nombres, es estrictamente una cuestión de preferencia. –