テンプレートを使用した、リスト用の構造体について
Posted: 2010年9月29日(水) 18:43
お世話になります。シエルです。
連続で質問すいません。
タスクシステムを作っている最中なんですが、そのためのリストの構造体についても
テンプレートを使って、基底クラスに持たせています。
実際はこんなのではありませんが、簡単に作りました。
template <typename T1> struct LIST{
T1 p;//関数ポインタが入っている。
LIST *next;
};
メンバ変数pには関数ポインタを入れます。
まあそれはどうでもいいんですが、その下のメンバのnextについてです。
この変数は次のリストを表すポインタになります。
この書き方があっているかについて確認したいのですが、
今現在は、上記のような書き方でコンパイルしても問題なくリストとして動いています。
ですが、下記のような書き方でも動きます。
template <typename T1> struct LIST{
T1 p;//関数ポインタが入っている。
LIST<T1> *next;//これにも明示的な具現化をする。
};
このnextはLIST型のポインタなので、そのLIST型はこの構造体テンプレートから作られているので、
これも明示的な具現化が必要かな?と思ってこうしてみました。
これでも問題なくコンパイルは通り、リストとしても問題なく動きました。
この二つの方法はどちらが正しいのでしょうか?
どなたかお分かりになる方、ご教示願います。
※独学で勉強中でして、まだ勉強したてなので、変な文言とかがあったらすみません。
連続で質問すいません。
タスクシステムを作っている最中なんですが、そのためのリストの構造体についても
テンプレートを使って、基底クラスに持たせています。
実際はこんなのではありませんが、簡単に作りました。
template <typename T1> struct LIST{
T1 p;//関数ポインタが入っている。
LIST *next;
};
メンバ変数pには関数ポインタを入れます。
まあそれはどうでもいいんですが、その下のメンバのnextについてです。
この変数は次のリストを表すポインタになります。
この書き方があっているかについて確認したいのですが、
今現在は、上記のような書き方でコンパイルしても問題なくリストとして動いています。
ですが、下記のような書き方でも動きます。
template <typename T1> struct LIST{
T1 p;//関数ポインタが入っている。
LIST<T1> *next;//これにも明示的な具現化をする。
};
このnextはLIST型のポインタなので、そのLIST型はこの構造体テンプレートから作られているので、
これも明示的な具現化が必要かな?と思ってこうしてみました。
これでも問題なくコンパイルは通り、リストとしても問題なく動きました。
この二つの方法はどちらが正しいのでしょうか?
どなたかお分かりになる方、ご教示願います。
※独学で勉強中でして、まだ勉強したてなので、変な文言とかがあったらすみません。
