2015-11-21 2 views
1

Я хотел бы сохранить значения из переменной enum в другом пространстве имен в массиве.Сохранение значений enum из другого пространства имен в массиве

Так предполагая, что перечисление объявляется следующим

namespace something 
{ 
    enum IWANT 
    { 
     FOO = 0, 
     BAR, 
     BLARGH, 
     MEH, 
     SIZE 
    }; 
} // namespace SOMETHING 

и я могу открыть перечисление еще используют

something::FOO 

Можно ли хранить некоторые переменные, которые я хочу от чего-то в массиве? Например

<varType> onlyWhatIwant[3] = {something::FOO, something::BAR, something::SIZE} 

Такое, что, когда переменная используется следующим образом onlyWhatIwant[1] points to the something::BAR

Я не знаю, если это вообще возможно или нет, но думал, что я хотел бы спросить, прежде чем искать другой маршрут.

+1

Конечно, есть, попробовать его. Я не понимаю эту проблему. – Downvoter

ответ

1

Перечисления - это в основном способ определения целочисленных констант; у них нет определенного адреса, так что вы можете иметь указатель на них в традиционном смысле. То, что вы хотите сделать, возможно в некоторой степени (проверьте мой полный пример ниже); однако элементы массива не будут указывать на что-то другое. Они будут иметь значение, равное назначенной константе (foo :: first и foo :: second, в моем примере).

namespace foo { 
    enum X {first, second}; 
}; 

int main() { 
    foo::X t[3] = {foo::first, foo::first, foo::second}; 
    return 0; 
} 
+0

Спасибо! Я выяснил, в чем проблема ... Я инициализировал переменную в неправильном месте! Спасибо за пример! – rakesh219

0

для перечисления как этот

namespace something{ 
    enum myEnum{ 
    Val0 = 0, 
    Val1 = 1, 
    Val2 = 2, 
    Val3 = 3, 
    //... 
    //Valn = n 
    }; 
} 

вы также можете использовать что-то вроде этого в качестве псевдонима для значений

enum onlywhatiwant{ 
    Val1 = something::Val1, 
    Val3 = something::Val3 
    // etc 
}; 
Смежные вопросы