Почему я не могу назначить неправильный элемент перечисления, но могу сравнить с неправильным элементом перечисления?

Со следующими определениями C ++:

enum EnumA {
    EA_Element = 1
};

enum EnumB {
    EB_Element = 10
};

следующий код не компилируется, и это имеет смысл только:

EnumA variable;
variable = EB_Element; // won't compile

но следующий код компилируется:

EnumA variable = EA_Element;
if( variable == EB_Element ) { //will compile
}

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

Почему эти, казалось бы, идентичные ситуации по-разному обрабатываются в C ++?

7
задан sharptooth 6 July 2011 в 06:53
поделиться