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