Compiler Error C2571

'function' : virtual function cannot be in union 'union'

A union is declared with a virtual function. You can declare a virtual function only in a class or structure. Possible resolutions:

  1. Change the union to a class or structure.

  2. Make the function nonvirtual.

The following sample generates C2571:

// C2571.cpp
// compile with: /c
union A {
   virtual void func1();   // C2571
   void func2();   // OK
};