У меня есть класс контейнера Stack, и я хочу создавать экземпляры различных типов стеков.поэтому я делаю это:
template <typename T>
class MyStack
{
.
.
T Pop()
{
if(!IsEmpty())
{
return data[top--];
}
else
{
return NULL; // I got error here
}
.
.
}
Когда я пытаюсь использовать стек следующим образом:
MyStack<GraphNode> blacks;
GraphNode t = blacks.Pop();
Я получаю эту ошибку:
conversion from ‘int’ to non-scalar type ‘GraphNode’ requested
Но когда я используютип указателя типа Stack<GraphNode*>
проблем нет.Я знаю, что NULL
- это 0
, и я понимаю, почему возникает ошибка ... Каков элегантный способ сообщить программе, что нет данных для возврата без изменения кода?я должен добавить что-то вроде неявного оператора преобразования типов в класс?как?
ПРИМЕЧАНИЕ: Я не использую STL