We recommend using Visual Studio 2017

Compiler Warning (level 2) C4099


The latest version of this topic can be found at Compiler Warning (level 2) C4099.

identifier' : type name first seen using 'objecttype1' now seen using 'objecttype2'

An object declared as a structure is defined as a class, or an object declared as a class is defined as a structure. The compiler uses the type given in the definition.

The following sample generates C4099.

// C4099.cpp  
// compile with: /W2 /c  
struct A;  
class A {};   // C4099, use different identifer or use same object type