- # 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)とは
<< 前の記事 : テンプレートでの関数の特殊化
スポンサーリンク