BUG: Deleting Pointer of Pointer Gives Ambiguous Error MessageLast reviewed: July 18, 1997Article ID: Q130218 |
1.00 1.50 1.51 1.52
WINDOWS
kbprg kbfixlist kbbuglist
The information to this article applies to :
SYMPTOMS An attempt to delete a pointer to a pointer to a const causes the compiler to generate the following ambiguous error message: Error C2665 : 'delete' : 4 overloads have no legal conversion for parameter 1 RESOLUTIONTo resolve this problem, use delete with a cast expression, as shown here:
delete [] cast-expression -or- delete cast-expressionYou can also resolve the problem by using the following code:
/*The following program resolves the problem: tyepedef const char *constcharstar; void main(void) { int num = 5; constcharstar *sects = new constcharstar[num]; sects[2] = "abcd"; delete [] (char **) sects;// suggested resolution for error C2665 // or " delete (char **) sects; " } STATUSMicrosoft 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++ for Windows NT, versions 1.0, 2.0, and 2.1.
MORE INFORMATION
Sample Code to Reproduce Problem
/* No special compile options needed. */ /* The following program reproduces the problem:typedef const char *constcharstar;
void main(void){ int num = 5; constcharstar *sects = new constcharstar[num]; sects[2] = "abcd"; delete sects; // error C2665 , ambiguous error}
|
Additional reference words: 1.00 1.50 1.51 1.52 8.00 8.00c no32bit noupdate
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |