Jak używać klasy enum jako zestawu flag?
Powiedzmy, że mam zestaw flag i taką klasę:
/// <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 */
}
i chcę, aby dzwoniący mógł wybrać więcej niż jedną opcję:
FindFiles handle(Append(basicRootPath, L"*"),
FindFilesOptions::RecursiveSearch | FindFilesOptions::IncludeDotDirectories);
Czy jest możliwe, aby w C ++ 11 było to obsługiwane w ściśle określony sposóbenum class
lub czy muszę powrócić do nietypowych wyliczeń?
(Wiem, że dzwoniący mógłstatic_cast
do typu bazowego istatic_cast
z powrotem, ale nie chcę, żeby dzwoniący musiał to zrobić)