Невозможно определить размер массива, на который указывает T *, после того как массив «распался» на указатель.
Подумайте о том, чтобы ваш тип стека взял пару указателей, один на первый элемент в массиве и один на последний элемент в массиве. Или используйте перегруженный метод push - один, который принимает один указатель, а другой - один указатель, а size_t сообщает вам, на сколько объектов указано.
И меня немного смущает вопрос, почему у вас есть T * в качестве параметра. Почему бы не взять T, как большинство операций «add» над контейнерами stl? И пока вы занимаетесь этим, знаете ли вы, что std :: stack существует (это «контейнерный адаптер» в stl)? Даже если у вас есть веская причина для его повторной реализации, рекомендуется обратиться к STL за примерами разработки API.