Original Post
Hello All I overloaded the global operator new to act in a certain manner when provided with additional arguments.
class key{};
void* operator new(size_t sz, key&)
{
//do some stuff
return ::operator new(sz);
};
This works fine, except for classes for which operator new is already overloaded.
class test
{
public:
void* operator new(size_t sz)
{
cout << "using custom new"<<endl;
return ::operator new(sz);
};
};
int main(int argc, char* argv[])
{
k k1;
int* p_int = new(k1) int;\\ok
test* p_test1 = new test;\\ok
test* p_test2 = new(k1) test;\\error
test* p_test3 = ::new(k1) test;\\ok, but doesn't use test's operator new
return 0;
}
I am compiling using VC++ 6 and the error I get is: error C2660: 'new' : function does not take 2 parameters Is there a way to support creating my custom new without affecting user class defined new? thanks