Como alguém usa uma classe enum como um conjunto de sinalizadores?
Digamos que eu tenha um conjunto de sinalizadores e uma classe como esta:
/// <summary>Options controlling a search for files.</summary>
enum class FindFilesOptions : unsigned char
{
LocalSearch = 0,
RecursiveSearch = 1,
IncludeDotDirectories = 2
};
class FindFiles : boost::noncopyable
{
/* omitted */
public:
FindFiles(std::wstring const& pattern, FindFilesOptions options);
/* omitted */
}
e quero que um chamador possa selecionar mais de uma opção:
FindFiles handle(Append(basicRootPath, L"*"),
FindFilesOptions::RecursiveSearch | FindFilesOptions::IncludeDotDirectories);
É possível dar suporte a isso de maneira fortemente tipada com o C ++ 11enum class
, ou eu tenho que reverter para enumerações sem tipo?
(Eu sei que o chamador poderiastatic_cast
para o tipo subjacente estatic_cast
de volta, mas eu não quero que o chamador tenha que fazer isso)