- # C言語/C++入門 > テンプレート・STL
クラステンプレート
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
テンプレートは、クラスにも利用できます。
関数テンプレートと同じような使い方です。
スポンサーリンク
#include <cstdlib> #include <iostream> // 足し算のクラス template<typename kind> class sum { public: kind calc(const kind num1, const kind num2) { return num1 + num2; } }; int main() { sum<double> calc_test; double result = calc_test.calc(4.5, 2.3); std::cout << result << "\n"; return 0; }
実行結果。
6.8
クラスからインスタンス化を行うときに注意が必要です。
ただ単に、「sum calc_test;」としてもデータ型が特定できないため、コンパイルエラーとなります。
「sum<double> calc_test;」と書いて、型を指定してやる必要があります。
または、以下のように書きます。
クラス内でメンバ関数のプロトタイプだけ宣言した場合は・・・
#include <cstdlib> #include <iostream> // 足し算のクラス template<typename kind> class sum { public: kind calc(const kind num1, const kind num2); }; template<typename kind> kind sum<kind>::calc(const kind num1, const kind num2) { return num1 + num2; } int main() { sum<double> calc_test; double result = calc_test.calc(4.5, 2.3); std::cout << result << "\n"; return 0; }
実行結果。
6.8
スポンサーリンク
>> 次の記事 : STL(Standard Template Library)とは
<< 前の記事 : テンプレートでの関数の特殊化
スポンサーリンク