我有一個堆棧容器類,我想創建各種類型的堆棧實例。所以我這樣做: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