Я создаю шаблонный класс стека. Когда пользователь вызывает top, если стек пуст, я хочу вернуть фиктивный элемент. Если бы мой стек был типа int, я бы возвратил -1. Но мой стек имеет тип T, поэтому я не уверен, что возвращать. Я хочу вернуть фиктивный узел, но не уверен, как его инициализировать, учитывая, что тип не объявлен до main (). Что я должен отправить обратно взамен? Я ничего не возвращаю? Что эквивалентно nullptr для объектов типа T?
template <typename T>
struct Node {
T val;
Node<T>* nextItem;
Node(T val_, Node<T>* nextItem_ = nullptr) : val(val_), nextItem(nextItem_) {};
};
template <typename T> // This top function.
T Stack<T>::top() const {
if (!isEmpty()) return topItem->val;
cout << "[WARNING] Stack is empty! Sending dummy object." << endl;
// return nullptr; // <-- Wrong. What should I return?
}