FIX: C2662: "'__vbaseDtor' cannot convert 'this' pointer"Last reviewed: September 18, 1997Article ID: Q117833 |
7.00 | 1.00 1.50 | 1.00
MS-DOS | WINDOWS | WINDOWS NTkbtool kbfixlist kbbuglist The information in this article applies to:
SYMPTOMSCompiling the sample code shown below using the C/C++ compilers for MS-DOS versions 7.0, 8.0, and 8.0c, or the C/C++ 32-bit compiler for Windows NT, version 8.0, causes the compiler to generate one of the following error messages:
error C2662: '__vbaseDtor': cannot convert 'this' pointer from 'const class::DerivedClass __near *' to 'class::DerivedClass __near *const' -or- error C2662: '__vbaseDtor' : cannot convert 'this' pointer from 'const class ::DerivedClass *' to 'class ::DerivedClass *const 'The error message usually is generated when the program tries to instantiate a local constant object of a class that is virtually derived from a base class in which a user-defined destructor is defined.
RESOLUTIONTo alleviate the C2662 error, use one of the following workarounds:
STATUSMicrosoft has confirmed this to be a problem in the products and versions listed above. This problem was corrected in C/C++ compiler version 9.0, included with Visual C++ 32-bit Edition, version 2.0.
MORE INFORMATIONThe following sample code can be used to demonstrate the problem:
Sample Code
/* Compile options needed: None */ class BaseClass { public: ~BaseClass(){} }; class DerivedClass: virtual public BaseClass { public: DerivedClass(){} ~DerivedClass(){} }; void main() { const DerivedClass _myClass; } |
Additional reference words: 1.00 1.50 7.00 8.00 8.00c
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |