استفاده for Range Base با enum class - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

استفاده for Range Base با enum class

0 امتیاز
سلام به همگی.

آیا امکانش هست که enum class را با for range base استفاده کنیم ؟
سوال شده خرداد 9, 1399  بوسیله ی AliStar (امتیاز 164)   2 20 32

2 پاسخ

0 امتیاز
سلام؛ مستقیماً فکر نکنم که بتونید از اون Enum Class استفاده کنید ولی می‌تونید که خود اون Enum class رو در قالبی دیگه مثل یک Structure ارائه بدید و Begin و Endش رو مشخص کنید و از اون نوع استفاده کنید.
پاسخ داده شده خرداد 10, 1399 بوسیله ی mg_ramezani (امتیاز 727)   1 1 12
–1 امتیاز
توی استک پیداش کردم تستم کردم درست هم کار می کنه.
#include <iostream>

template< typename T >
class Enum
{
public:
   class Iterator
   {
   public:
      Iterator( int value ) :
         m_value( value )
      { }

      T operator*( void ) const
      {
         return (T)m_value;
      }

      void operator++( void )
      {
         ++m_value;
      }

      bool operator!=( Iterator rhs )
      {
         return m_value != rhs.m_value;
      }

   private:
      int m_value;
   };

};

template< typename T >
typename Enum<T>::Iterator begin( Enum<T> )
{
   return typename Enum<T>::Iterator( (int)T::First );
}

template< typename T >
typename Enum<T>::Iterator end( Enum<T> )
{
   return typename Enum<T>::Iterator( ((int)T::Last) + 1 );
}

enum class Color
{
   Red,
   Green,
   Blue,
   First = Red,
   Last = Blue
};

int main()
{
   for( auto e: Enum<Color>() )
   {
      std::cout << ((int)e) << std::endl;
   }
}

 

 

پاسخ داده شده خرداد 11, 1399 بوسیله ی COLD (امتیاز 200)   4 28 37
...