私はStackコンテナクラスを持っていて、さまざまなタイプのスタックのインスタンスを作成したいと思います。私はこのようなスタックを使用しようとするとC++のテンプレート問題:nullに変換
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
+1重複していますが、ダウンボントはほとんどありません。それはよく定式化された質問です。 – Skurmedel
downvoteは悪いデザインのものを試してみたもので、 "コードを変更せずに"完全に避けるべきです。執着する必要はありません - ダウンボートは単にダウンボォートです、個人的な意見ではなく、 "地球の顔から彼を拭く"ではありません。 – Suma