Powiedzmy Mam zestaw flag i klasę takiego:Jak używać klasy wyliczeniowej jako zestawu flag?
/// <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ę rozmówca, aby móc wybrać więcej niż jedną opcję:
FindFiles handle(Append(basicRootPath, L"*"),
FindFilesOptions::RecursiveSearch | FindFilesOptions::IncludeDotDirectories);
Czy to możliwe, aby wspierać to w sposób mocno napisany przy pomocy C++ 11 enum class
, czy też muszę powrócić do wyliczeń bez typów?
(wiem dzwoniący mógł static_cast
do typu bazowego i static_cast
z powrotem, ale nie chcę rozmówca musiał zrobić)
Istnieje również ['std :: bitset'] (http://en.cppreference.com/w/cpp/utility/bitset) do przekazywania flag. – dyp