我有一个堆栈容器类,我想创建各种类型的堆栈实例。所以我这样做:C++模板问题:转换为空
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
可能重复的[如何从模板类中的方法返回NULL](http://stackoverflow.com/questions/1392869/how-to-return-null-from-a-method-in-a-模板级) – Suma 2011-01-25 20:43:17
+1重复,但很难保证downvote。这是一个很好的问题。 – Skurmedel 2011-01-25 20:45:04
downvote是尝试一些设计不好的东西,应该完全避免 - “不用更改代码?”。没有必要被迷恋 - downvote只是一个downvote,一个个人的观点,它不是“从地球表面擦拭他”。 – Suma 2011-01-25 20:47:58