Knowledge Base

FIX: C2371: Cast to Struct Ptr in Default Arg of Class Member

Article ID: 148504

Article Last Modified on 7/5/2005


APPLIES TO


This article was previously published under Q148504

SYMPTOMS

When encountering a cast to a structure pointer in the default argument of a class member function, the Visual C++ compiler generates the following error:
error C2371: 'MyClass' : redefinition; different basic types
This error does not occur if the function declaration is not a member of a class.

RESOLUTION

If you are casting from an integral literal, remove the cast. For example, change this:
   MyFunc (struct MyStruct *p = (struct MyStruct*)0);  //C2371 error
				
to this:
   MyFunc (struct MyStruct *p = 0);                    //no error
				
If you are casting from a different structure type, remove the struct keyword from the cast. For example, change this:
   yFunc (struct MyStruct *p = (struct MyStruct*)x);  //C2371 error
				
to this:
   MyFunc (struct MyStruct *p = (MyStruct*)x);         //no error
				

STATUS

Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This bug was corrected in Visual C++ version 5.0.

Additional query words: kbVC400bug

Keywords: kbbug kbfix kbvc500fix kbcpponly kbcompiler KB148504