PRB: Errors Generated Overloading Operator New []

ID: Q122305


The information in this article applies to:
  • Microsoft C/C++ for MS-DOS, version 7.0
  • Microsoft Visual C++ for Windows, 16-bit edition, versions 1.0, 1.5, 1.51, 1.52
  • Microsoft Visual C++, 32-bit Editions, versions 1.0, 2.0, 4.0, 4.1, 4.2, 5.0, 6.0


SYMPTOMS

The September 1994 ANSI C++ Draft specifies that it is possible to overload the new [] operator. However, the Microsoft C/C++ compilers included in the Microsoft products listed above do not support this feature. Microsoft C/C++ version 7.0 and Visual C++ up to version 5.0 will generate the following error message:

error C2092: array element type cannot be function
Microsoft Visual C++, 32-bit edition, version 5.0 generates two error messages:
error C2039: 'new[]' : is not a member of '`global namespace''

error C2660: 'new[]' : function does not take 1 parameters


STATUS

This behavior is by design.


MORE INFORMATION

The source code below can be used to illustrate how to overload the new [] operator, which will generate the error given above.

Sample Code to Reproduce Behavior


/* Compile options needed: none
*/ 

#include <new.h>

class example
{
public:

   void  *operator new [] ( size_t sz, const example& )
      { return( ::operator new [] ( sz )); }
};

void main(void)
{
} 

Additional query words: C2372 C2039 C2660

Keywords : kbLangCPP kbVC100 kbVC150 kbVC151 kbVC152 kbVC200 kbVC410 kbVC420 kbVC500 kbVC600
Version : MS-DOS:7.0;WINDOWS:1.0,1.5,1.51,1.52;WINDOWS NT:1.0,2.0,4.0,4.1,4.2,5.0
Platform : MS-DOS NT WINDOWS
Issue type : kbprb


Last Reviewed: July 1, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.