• ベストアンサー

関数テンプレート(構造体付き)

初歩的なことだと思うのですが、、 構造体の中の型に汎用性をもたせたいのですが、 template <typename DATA> struct cell { DATA data; DATA *next; }; cell<DATA> *insert(DATA x, cell<DATA> *init ) { cell<DATA> *p; r =new cell<DATA>; このような形かなと思ったのですが、エラーがかなりでます。 リストのプログラムで、挿入されるデータに汎用性をもたせたいのです。 お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

template<typename DATA> struct cell { ... }; template<typename DATA> は 構造体/関数 の双方に必要です。 # 参考書を読んでいますか?

noname#6448
質問者

お礼

何度もありがとうございました。 おかげさまでできました。 参考書に構造体も使った例がなかったもので、悩んでいました。 御手数おかけいたしました。

その他の回答 (2)

回答No.2

template<typename DATA> cell<DATA> *insert(DATA x, cell<DATA> *init ) { ... } ではなくて?

noname#6448
質問者

補足

度々ありがとうございます。 struct cell { DATA data; DATA *next; }; template<typename DATA> cell<DATA> *insert(DATA x, cell<DATA> *init ) { cell<DATA> *p; このような形でしょうか? これだと構造体のDATAが宣言されていない、というエラーがでてしまいす(;。;) 構造体なしでテンプレートを使うのならできるのですが、構造体が混ざると混乱してしまいます。

回答No.1

リストをわざわざ自作せずとも、 双方向リスト: std::list<DATA> が用意されています。

noname#6448
質問者

補足

STLを使えばたしかにリストは使えるのですが、 テンプレートの勉強中なのです^^;;

関連するQ&A