Должны ли вы объявлять перечисления внутри или вне класса, если указанные перечисления используются только в функциях класса?Должны ли вы объявлять перечисления внутри или вне класса?
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
Как и во всех вопросах [в стиле кодирования], ответ «это зависит». –
У кого-то может быть немного больше информации об этом, кроме меня, но моя стратегия всегда заключалась в том, чтобы не выставлять что-то, пока оно не должно быть раскрыто. (Другими словами, если он используется только внутри, то сохраните его внутри.) – Corbin
Как обычно, с вопросами стиля кодирования нет определенного ответа.Загрязнение глобальной области обычно не является хорошей идеей из-за риска противоречивых деклараций, но если вы придерживаетесь своего «собственного» пространства имен, это строго зависит от предпочтений. –