各位高手,请问一个effective c++上的newHandlerSupport的编译问题
这本书的条款7-8上面说了有关内存管理的问题,我编译了一下,编译不过啊?敢问给为高手怎么回事
newHandlerSupport.h
#ifndef NEW_HANDLER_SUPPORT_H#define NEW_HANDLER_SUPPORT_H#include <new>using namespace std;template<class T>class newHandlerSupport{ public: static new_handler set_new_handler(new_handler p); static void* operator new(size_t size); private: static new_handler currentHandler;};#endif#include "newHandlerSupport.h"template<class T>new_handler newHandlerSupport<T>::set_new_handler(new_handler p){ new_handler oldHandler = currentHandler; currentHandler =p; return oldHandler;}template<class T>void * newHandlerSupport<T>::operator new(size_t size){ new_handler globalHandler = std::set_new_handler(currentHandler); void * memory; try { memory = ::operator new(size); } catch (std::bad_alloc&) { std::set_new_handler(globalHandler); throw; } std::set_new_handler(globalHandler); return memory;}template<class T>new_handler newHandlerSupport<T>::currentHandler;#include <iostream>#include "newHandlerSupport.h"using namespace std;void noMoreMemory( void ){ cout << "err";}class test:public newHandlerSupport<test>{ int aaaa[1000000000]; public: test(){}; ~test(){}};int main(){ //newHandlerSupport<test>::set_new_handler(noMoreMemory);//就是这2行调用啊 //test<int> * x = new test<int>;//我用test *x = new test;也会报错,到底是什么问题呢? return 0;}