Microsoft KB Archive/148504

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

Article ID: 148504

Article Last Modified on 7/5/2005

-

APPLIES TO


 * Microsoft Visual C++ 4.0 Professional Edition
 * Microsoft Visual C++ 4.1 Subscription
 * Microsoft Visual C++ 4.2 Professional Edition
 * Microsoft Visual C++ 4.2 Enterprise Edition
 * Microsoft Visual C++ 5.0 Learning Edition
 * Microsoft Visual C++ 5.0 Learning Edition

-



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

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.