FIX: C2371: Cast to Struct Ptr in Default Arg of Class Member (148504)
The information in this article applies to:
- Microsoft Visual C++, 32-bit Professional Edition 4.0
- Microsoft Visual C++, 32-bit Professional Edition 4.1
- Microsoft Visual C++, 32-bit Professional Edition 4.2
- Microsoft Visual C++, 32-bit Enterprise Edition 4.2
- Microsoft Visual C++, 32-bit Learning Edition 4.0
- Microsoft Visual C++, 32-bit Learning Edition 4.2
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.
| Modification Type: | Minor | Last Reviewed: | 7/5/2005 |
|---|
| Keywords: | kbbug kbCompiler kbCPPonly kbfix kbVC500fix KB148504 |
|---|
|