- ベストアンサー
関数テンプレート(構造体付き)
初歩的なことだと思うのですが、、 構造体の中の型に汎用性をもたせたいのですが、 template <typename DATA> struct cell { DATA data; DATA *next; }; cell<DATA> *insert(DATA x, cell<DATA> *init ) { cell<DATA> *p; r =new cell<DATA>; このような形かなと思ったのですが、エラーがかなりでます。 リストのプログラムで、挿入されるデータに汎用性をもたせたいのです。 お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
template<typename DATA> struct cell { ... }; template<typename DATA> は 構造体/関数 の双方に必要です。 # 参考書を読んでいますか?
その他の回答 (2)
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
template<typename DATA> cell<DATA> *insert(DATA x, cell<DATA> *init ) { ... } ではなくて?
補足
度々ありがとうございます。 struct cell { DATA data; DATA *next; }; template<typename DATA> cell<DATA> *insert(DATA x, cell<DATA> *init ) { cell<DATA> *p; このような形でしょうか? これだと構造体のDATAが宣言されていない、というエラーがでてしまいす(;。;) 構造体なしでテンプレートを使うのならできるのですが、構造体が混ざると混乱してしまいます。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
リストをわざわざ自作せずとも、 双方向リスト: std::list<DATA> が用意されています。
補足
STLを使えばたしかにリストは使えるのですが、 テンプレートの勉強中なのです^^;;
お礼
何度もありがとうございました。 おかげさまでできました。 参考書に構造体も使った例がなかったもので、悩んでいました。 御手数おかけいたしました。