Knowledge Base

PRB: Errors Generated Overloading Operator New []

Article ID: 122305

Article Last Modified on 12/8/2003


APPLIES TO


This article was previously published under Q122305

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 kbprb KB122305