We recommend using Visual Studio 2017

Compiler Error C2450


The latest version of this topic can be found at Compiler Error C2450.

switch expression of type 'type' is illegal

The switch expression evaluates to an invalid type. It must evaluate to an integer type or a class type with unambiguous conversion to an integer type. If it evaluates to a user-defined type, you must supply a conversion operator.

The following sample generates C2450:

// C2450.cpp  
class X {  
   int i;  
} x;  
class Y {  
   int i;  
   operator int() { return i; }   // conversion operator  
} y;  
int main() {  
   int j = 1;  
   switch ( x ) {   // C2450, x is not type int  
   // try the following line instead  
   // switch ( y ) {  
      default:  ;