Это в основном вопрос личных предпочтений, однако, я чувствую, что решение (потенциальных) конфликтов имен в C ++ лучше всего делать с использованием пространств имен, так как именно в этом и заключается смысл существования пространств имен.

ли смысл делать что-то вроде этого:

namespace status{
  enum status{
    ok,
    error
  };
}

и использовать это такstatus::ok

Или я должен сделать это:

enum status{
  status_ok,
  status_error
};

и использовать это такstatus_ok?

Обновить: С C ++ 11 вы теперь должны сделать это:

enum class status {
    ok,
    error
};

и использовать так:status::ok

Ответы на вопрос(5)

Ваш ответ на вопрос