I seem to be missing something. I'm failing to overload the delete operator for a class.

Code:
template<typename T> class DeleteChecker
{
public:
	DeleteChecker();
	~DeleteChecker();
	DeleteChecker(T* p);
	DeleteChecker(DeleteChecker& rRhs);
	DeleteChecker& operator = (DeleteChecker& rRhs);
	DeleteChecker& operator = (T* rRhs);
	T& operator * ();
	T* operator -> ();
	//void* operator new(size_t size);
	static void operator delete(void* /*pToDelete*/);
	operator bool() const;
	bool operator ! () const;
	const T& operator [] (uint32_t Dimension) const;
	T& operator [] (uint32_t Dimension);

private:
	void Init();
	struct DeleteData
	{
		T* p;
		uint32_t refCount;
		//uint32_t Dimensions;
		//bool 
	};

	DeleteData* m_pData;
};
Code:
int main()
{
	struct Test
	{
		int x, y, z;
	};
	DeleteChecker<Test> p = new Test;
	p->x = 0;
	delete p;
}
Error 1 error C2440: 'delete' : cannot convert from 'DeleteChecker<T>' to 'void *' g:\w00t\visual studio 2008\projects\temp\temp.cpp 175

Someone please try to jog my memory :/