FIX: C1001 Error for typedef Within the Class DeclarationLast reviewed: September 18, 1997Article ID: Q122300 |
2.00
WINDOWS NT
kbtool kbfixlist
The information in this article applies to:
SYMPTOMSCompiling the code that uses a class declaration with a typedef of itself, as demonstrated by the sample code in the More Information section, produces this error:
fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'msc1.cpp', line 1056) Please choose the Technical Support command on the Visual C++ Help menu, or open the Technical Support help file for more information RESOLUTIONUse a forward declaration for the class, and place the typedef line before the class declaration:
class A; typedef A B;Alternatively, enclose the returned typedef name in parentheses to indicate that the constructor is used to return the value (see AltRetB in the sample code).
STATUSMicrosoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This problem was corrected in Microsoft Visual C++, 32-bit Edition, version 4.0.
MORE INFORMATION
Sample Code
/* Compile options needed: none */class A { typedef A B; B RetB() { return B(*this); } // this causes the error B AltRetB() { return (B)(*this); } // this line is OK};
|
Additional reference words: 2.00 9.00 buglist2.00
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |